/*
 * Copyright (c) 2018 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
const AbstractModel = require("../../common/abstract_model");

/**
 * ModifyQAAttrRange response structure.
 * @class
 */
class ModifyQAAttrRangeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetWsToken response structure.
 * @class
 */
class GetWsTokenResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Token value (valid for 60 seconds, valid only once, multiple validations will report an error).
         * @type {string || null}
         */
        this.Token = null;

        /**
         * Balance. The balance is valid if it is greater than 0.
         * @type {number || null}
         */
        this.Balance = null;

        /**
         * The character limit for input in the chat window.
         * @type {number || null}
         */
        this.InputLenLimit = null;

        /**
         * Application mode: standard; agent; single_workflow.
         * @type {string || null}
         */
        this.Pattern = null;

        /**
         * SingleWorkflow.
         * @type {KnowledgeQaSingleWorkflow || null}
         */
        this.SingleWorkflow = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Token = 'Token' in params ? params.Token : null;
        this.Balance = 'Balance' in params ? params.Balance : null;
        this.InputLenLimit = 'InputLenLimit' in params ? params.InputLenLimit : null;
        this.Pattern = 'Pattern' in params ? params.Pattern : null;

        if (params.SingleWorkflow) {
            let obj = new KnowledgeQaSingleWorkflow();
            obj.deserialize(params.SingleWorkflow)
            this.SingleWorkflow = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListUsageCallDetail request structure.
 * @class
 */
class ListUsageCallDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Uin list.
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

        /**
         * Call type list.
         * @type {string || null}
         */
        this.CallType = null;

        /**
         * Filter sub-scenario.
         * @type {Array.<string> || null}
         */
        this.SubScenes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;
        this.CallType = 'CallType' in params ? params.CallType : null;
        this.SubScenes = 'SubScenes' in params ? params.SubScenes : null;

    }
}

/**
 * CheckAttributeLabelExist request structure.
 * @class
 */
class CheckAttributeLabelExistRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Attribute name.
         * @type {string || null}
         */
        this.LabelName = null;

        /**
         * Attribute ID.
         * @type {string || null}
         */
        this.AttributeBizId = null;

        /**
         * Log in to the user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to the user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Scroll loading, the last attribute label ID.
         * @type {string || null}
         */
        this.LastLabelBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.LabelName = 'LabelName' in params ? params.LabelName : null;
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.LastLabelBizId = 'LastLabelBizId' in params ? params.LastLabelBizId : null;

    }
}

/**
 * Export knowledge label filter.
 * @class
 */
class AttributeFilters extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieve, attribute or label name.
         * @type {string || null}
         */
        this.Query = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Query = 'Query' in params ? params.Query : null;

    }
}

/**
 * DescribeQA response structure.
 * @class
 */
class DescribeQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A business ID.

         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Question.

         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.

         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Custom parameter.
         * @type {string || null}
         */
        this.CustomParam = null;

        /**
         * Source:
1 - Q&A pairs generated from documents.
2 - Q&A pairs imported in batches.
3 - Q&A pairs input manually one by one.


         * @type {number || null}
         */
        this.Source = null;

        /**
         * Source description.

         * @type {string || null}
         */
        this.SourceDesc = null;

        /**
         * Update time.


         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status<br>1 - pending verification; 2 - not released; 3 - releasing; 4 - released; 5 - release failed; 6 - not approved; 7 - under review; 8 - review failed, 9 - review failed, pending manual review after appeal; 11 - review failed, manual review not passed after appeal; 12 - expired; 13 - excessive invalid; 14 - excessive invalid recovered; 19 - learning; 20 - learning failed.


         * @type {number || null}
         */
        this.Status = null;

        /**
         * Status description.


         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Category ID.

         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Whether verification is allowed.

         * @type {boolean || null}
         */
        this.IsAllowAccept = null;

        /**
         * Whether deletion is allowed.

         * @type {boolean || null}
         */
        this.IsAllowDelete = null;

        /**
         * Whether editing is allowed.

         * @type {boolean || null}
         */
        this.IsAllowEdit = null;

        /**
         * Document ID.

         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Document name.

         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Document type.

         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Segment ID.

         * @type {string || null}
         */
        this.SegmentBizId = null;

        /**
         * Segment content.
         * @type {string || null}
         */
        this.PageContent = null;

        /**
         * Segment highlight content.
         * @type {Array.<Highlight> || null}
         */
        this.Highlights = null;

        /**
         * Segment content.

         * @type {string || null}
         */
        this.OrgData = null;

        /**
         * Applicable scope of label.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Label.
         * @type {Array.<AttrLabel> || null}
         */
        this.AttrLabels = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Similar question list information.
         * @type {Array.<SimilarQuestion> || null}
         */
        this.SimilarQuestions = null;

        /**
         * Review status of Q&A text: 1 - review failed.
         * @type {number || null}
         */
        this.QaAuditStatus = null;

        /**
         * Review status of image in Q&A: 1-review failed.
         * @type {number || null}
         */
        this.PicAuditStatus = null;

        /**
         * Review status of video in Q&A: 1 - review failed.
         * @type {number || null}
         */
        this.VideoAuditStatus = null;

        /**
         * Question description.
         * @type {string || null}
         */
        this.QuestionDesc = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.CustomParam = 'CustomParam' in params ? params.CustomParam : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.SourceDesc = 'SourceDesc' in params ? params.SourceDesc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.IsAllowAccept = 'IsAllowAccept' in params ? params.IsAllowAccept : null;
        this.IsAllowDelete = 'IsAllowDelete' in params ? params.IsAllowDelete : null;
        this.IsAllowEdit = 'IsAllowEdit' in params ? params.IsAllowEdit : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.SegmentBizId = 'SegmentBizId' in params ? params.SegmentBizId : null;
        this.PageContent = 'PageContent' in params ? params.PageContent : null;

        if (params.Highlights) {
            this.Highlights = new Array();
            for (let z in params.Highlights) {
                let obj = new Highlight();
                obj.deserialize(params.Highlights[z]);
                this.Highlights.push(obj);
            }
        }
        this.OrgData = 'OrgData' in params ? params.OrgData : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabel();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;

        if (params.SimilarQuestions) {
            this.SimilarQuestions = new Array();
            for (let z in params.SimilarQuestions) {
                let obj = new SimilarQuestion();
                obj.deserialize(params.SimilarQuestions[z]);
                this.SimilarQuestions.push(obj);
            }
        }
        this.QaAuditStatus = 'QaAuditStatus' in params ? params.QaAuditStatus : null;
        this.PicAuditStatus = 'PicAuditStatus' in params ? params.PicAuditStatus : null;
        this.VideoAuditStatus = 'VideoAuditStatus' in params ? params.VideoAuditStatus : null;
        this.QuestionDesc = 'QuestionDesc' in params ? params.QuestionDesc : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * 
 * @class
 */
class ExtraInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.EChartsInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EChartsInfo = 'EChartsInfo' in params ? params.EChartsInfo : null;

    }
}

/**
 * GetAppKnowledgeCount request structure.
 * @class
 */
class GetAppKnowledgeCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type: doc - document; qa - Q&A pair.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Login to user's root account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * StopDocParse response structure.
 * @class
 */
class StopDocParseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListSelectDoc response structure.
 * @class
 */
class ListSelectDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Dropdown content.
         * @type {Array.<Option> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Option();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeReleaseInfo request structure.
 * @class
 */
class DescribeReleaseInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * DeleteDoc request structure.
 * @class
 */
class DeleteDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of document business IDs.
         * @type {Array.<string> || null}
         */
        this.DocBizIds = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocBizIds = 'DocBizIds' in params ? params.DocBizIds : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * GetAnswerTypeDataCount request structure.
 * @class
 */
class GetAnswerTypeDataCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date.
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End date.
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Application ID.
         * @type {Array.<string> || null}
         */
        this.AppBizId = null;

        /**
         * Message source (1. shared from user end; 2. chat API; 3. chat test, 4. application evaluation).
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * Node information
 * @class
 */
class RunNodeInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Node type, 0: unspecified; 1: start node; 2: api node; 3: inquiry node; 4: answer node.
         * @type {number || null}
         */
        this.NodeType = null;

        /**
         * Node ID.
         * @type {string || null}
         */
        this.NodeId = null;

        /**
         * Node name.
         * @type {string || null}
         */
        this.NodeName = null;

        /**
         * Requested API.
         * @type {InvokeAPI || null}
         */
        this.InvokeApi = null;

        /**
         * Values of all slots of the current node, key: SlotID. Return an Null even if there is no value.
         * @type {Array.<ValueInfo> || null}
         */
        this.SlotValues = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NodeType = 'NodeType' in params ? params.NodeType : null;
        this.NodeId = 'NodeId' in params ? params.NodeId : null;
        this.NodeName = 'NodeName' in params ? params.NodeName : null;

        if (params.InvokeApi) {
            let obj = new InvokeAPI();
            obj.deserialize(params.InvokeApi)
            this.InvokeApi = obj;
        }

        if (params.SlotValues) {
            this.SlotValues = new Array();
            for (let z in params.SlotValues) {
                let obj = new ValueInfo();
                obj.deserialize(params.SlotValues[z]);
                this.SlotValues.push(obj);
            }
        }

    }
}

/**
 * 
 * @class
 */
class AgentDebugInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.Input = null;

        /**
         * 
         * @type {string || null}
         */
        this.Output = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Input = 'Input' in params ? params.Input : null;
        this.Output = 'Output' in params ? params.Output : null;

    }
}

/**
 * UploadAttributeLabel response structure.
 * @class
 */
class UploadAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Import error.
         * @type {string || null}
         */
        this.ErrorMsg = null;

        /**
         * Error link.
         * @type {string || null}
         */
        this.ErrorLink = null;

        /**
         * Error link text.
         * @type {string || null}
         */
        this.ErrorLinkText = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrorMsg = 'ErrorMsg' in params ? params.ErrorMsg : null;
        this.ErrorLink = 'ErrorLink' in params ? params.ErrorLink : null;
        this.ErrorLinkText = 'ErrorLinkText' in params ? params.ErrorLinkText : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Message details.
 * @class
 */
class MsgRecord extends  AbstractModel {
    constructor(){
        super();

        /**
         * Content.
         * @type {string || null}
         */
        this.Content = null;

        /**
         * The Session ID corresponding to the current record.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Record ID.
         * @type {string || null}
         */
        this.RecordId = null;

        /**
         * Associated record ID.
         * @type {string || null}
         */
        this.RelatedRecordId = null;

        /**
         * Whether it is from oneself.
         * @type {boolean || null}
         */
        this.IsFromSelf = null;

        /**
         * Sender name.
         * @type {string || null}
         */
        this.FromName = null;

        /**
         * Avatar of the sender.
         * @type {string || null}
         */
        this.FromAvatar = null;

        /**
         * Timestamp.
         * @type {string || null}
         */
        this.Timestamp = null;

        /**
         * Whether it is read.
         * @type {boolean || null}
         */
        this.HasRead = null;

        /**
         * Evaluation.
         * @type {number || null}
         */
        this.Score = null;

        /**
         * Whether to rate.
         * @type {boolean || null}
         */
        this.CanRating = null;

        /**
         * Whether to display the feedback button.
         * @type {boolean || null}
         */
        this.CanFeedback = null;

        /**
         * Record type.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Reference source.
         * @type {Array.<MsgRecordReference> || null}
         */
        this.References = null;

        /**
         * Reason for evaluation.
         * @type {Array.<string> || null}
         */
        this.Reasons = null;

        /**
         * Whether it is a large model.
         * @type {boolean || null}
         */
        this.IsLlmGenerated = null;

        /**
         * Image URL, which can be public read.
         * @type {Array.<string> || null}
         */
        this.ImageUrls = null;

        /**
         * Statistical information of the current token.
         * @type {TokenStat || null}
         */
        this.TokenStat = null;

        /**
         * Response method.
1: Large model directly replies.
2: Conservative reply, reply to unknown questions.
3: Reply to rejected question.
4: Sensitive response.
5: Directly reply to Q&A pairs. Priority will be given to answering the adopted Q&A pairs.
6: Reply with welcome words.
7: Reply for concurrency limit exceeded.
8: Global intervention knowledge.
9: Reply during the task flow process. When task_flow.type = 0 in history, it is a response from the large model.
10: Reply with task flow answer.
11: Reply from the search engine.
12: Reply after knowledge polishing.
13: Reply with image understanding.
14: Reply based on real-time document.
         * @type {number || null}
         */
        this.ReplyMethod = null;

        /**
         * Option tab, used for multi-round dialogue.
         * @type {Array.<string> || null}
         */
        this.OptionCards = null;

        /**
         * Task information.
         * @type {TaskFlowInfo || null}
         */
        this.TaskFlow = null;

        /**
         * File information passed in by the user.
         * @type {Array.<FileInfo> || null}
         */
        this.FileInfos = null;

        /**
         * Location information of reference source .
         * @type {Array.<QuoteInfo> || null}
         */
        this.QuoteInfos = null;

        /**
         * Information on the thinking process of the agent.
         * @type {AgentThought || null}
         */
        this.AgentThought = null;

        /**
         * Expanded information.
         * @type {ExtraInfo || null}
         */
        this.ExtraInfo = null;

        /**
         * Workflow information.
         * @type {WorkflowInfo || null}
         */
        this.WorkFlow = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Content = 'Content' in params ? params.Content : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.RecordId = 'RecordId' in params ? params.RecordId : null;
        this.RelatedRecordId = 'RelatedRecordId' in params ? params.RelatedRecordId : null;
        this.IsFromSelf = 'IsFromSelf' in params ? params.IsFromSelf : null;
        this.FromName = 'FromName' in params ? params.FromName : null;
        this.FromAvatar = 'FromAvatar' in params ? params.FromAvatar : null;
        this.Timestamp = 'Timestamp' in params ? params.Timestamp : null;
        this.HasRead = 'HasRead' in params ? params.HasRead : null;
        this.Score = 'Score' in params ? params.Score : null;
        this.CanRating = 'CanRating' in params ? params.CanRating : null;
        this.CanFeedback = 'CanFeedback' in params ? params.CanFeedback : null;
        this.Type = 'Type' in params ? params.Type : null;

        if (params.References) {
            this.References = new Array();
            for (let z in params.References) {
                let obj = new MsgRecordReference();
                obj.deserialize(params.References[z]);
                this.References.push(obj);
            }
        }
        this.Reasons = 'Reasons' in params ? params.Reasons : null;
        this.IsLlmGenerated = 'IsLlmGenerated' in params ? params.IsLlmGenerated : null;
        this.ImageUrls = 'ImageUrls' in params ? params.ImageUrls : null;

        if (params.TokenStat) {
            let obj = new TokenStat();
            obj.deserialize(params.TokenStat)
            this.TokenStat = obj;
        }
        this.ReplyMethod = 'ReplyMethod' in params ? params.ReplyMethod : null;
        this.OptionCards = 'OptionCards' in params ? params.OptionCards : null;

        if (params.TaskFlow) {
            let obj = new TaskFlowInfo();
            obj.deserialize(params.TaskFlow)
            this.TaskFlow = obj;
        }

        if (params.FileInfos) {
            this.FileInfos = new Array();
            for (let z in params.FileInfos) {
                let obj = new FileInfo();
                obj.deserialize(params.FileInfos[z]);
                this.FileInfos.push(obj);
            }
        }

        if (params.QuoteInfos) {
            this.QuoteInfos = new Array();
            for (let z in params.QuoteInfos) {
                let obj = new QuoteInfo();
                obj.deserialize(params.QuoteInfos[z]);
                this.QuoteInfos.push(obj);
            }
        }

        if (params.AgentThought) {
            let obj = new AgentThought();
            obj.deserialize(params.AgentThought)
            this.AgentThought = obj;
        }

        if (params.ExtraInfo) {
            let obj = new ExtraInfo();
            obj.deserialize(params.ExtraInfo)
            this.ExtraInfo = obj;
        }

        if (params.WorkFlow) {
            let obj = new WorkflowInfo();
            obj.deserialize(params.WorkFlow)
            this.WorkFlow = obj;
        }

    }
}

/**
 * CreateDocCate response structure.
 * @class
 */
class CreateDocCateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether it is possible to add.

         * @type {boolean || null}
         */
        this.CanAdd = null;

        /**
         * Whether it is editable.
         * @type {boolean || null}
         */
        this.CanEdit = null;

        /**
         * Whether it can be deleted.

         * @type {boolean || null}
         */
        this.CanDelete = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CanAdd = 'CanAdd' in params ? params.CanAdd : null;
        this.CanEdit = 'CanEdit' in params ? params.CanEdit : null;
        this.CanDelete = 'CanDelete' in params ? params.CanDelete : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteDocCate response structure.
 * @class
 */
class DeleteDocCateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAttributeLabel response structure.
 * @class
 */
class ExportAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Export task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * 
 * @class
 */
class WorkflowInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * 
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * 
         * @type {string || null}
         */
        this.WorkflowRunId = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.OptionCards = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.Outputs = null;

        /**
         * 
         * @type {string || null}
         */
        this.WorkflowReleaseTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.WorkflowRunId = 'WorkflowRunId' in params ? params.WorkflowRunId : null;
        this.OptionCards = 'OptionCards' in params ? params.OptionCards : null;
        this.Outputs = 'Outputs' in params ? params.Outputs : null;
        this.WorkflowReleaseTime = 'WorkflowReleaseTime' in params ? params.WorkflowReleaseTime : null;

    }
}

/**
 * ExportQAList response structure.
 * @class
 */
class ExportQAListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetAppSecret response structure.
 * @class
 */
class GetAppSecretResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application key.
         * @type {string || null}
         */
        this.AppKey = null;

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Whether to release.
         * @type {boolean || null}
         */
        this.IsRelease = null;

        /**
         * Whether there is permission to view.
         * @type {boolean || null}
         */
        this.HasPermission = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppKey = 'AppKey' in params ? params.AppKey : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.IsRelease = 'IsRelease' in params ? params.IsRelease : null;
        this.HasPermission = 'HasPermission' in params ? params.HasPermission : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListRejectedQuestion request structure.
 * @class
 */
class ListRejectedQuestionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.


         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.

         * @type {string || null}
         */
        this.Query = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;

    }
}

/**
 * CreateQACate response structure.
 * @class
 */
class CreateQACateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether it is possible to add.

         * @type {boolean || null}
         */
        this.CanAdd = null;

        /**
         * Whether it is editable.
         * @type {boolean || null}
         */
        this.CanEdit = null;

        /**
         * Whether it can be deleted.

         * @type {boolean || null}
         */
        this.CanDelete = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CanAdd = 'CanAdd' in params ? params.CanAdd : null;
        this.CanEdit = 'CanEdit' in params ? params.CanEdit : null;
        this.CanDelete = 'CanDelete' in params ? params.CanDelete : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyDocAttrRange response structure.
 * @class
 */
class ModifyDocAttrRangeResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetAnswerTypeDataCount response structure.
 * @class
 */
class GetAnswerTypeDataCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of messages.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Total number of direct responses by the large model.
         * @type {number || null}
         */
        this.ModelReplyCount = null;

        /**
         * Total number of knowledge-based responses.
         * @type {number || null}
         */
        this.KnowledgeCount = null;

        /**
         * Total number of task flow responses.
         * @type {number || null}
         */
        this.TaskFlowCount = null;

        /**
         * Total number of search engine responses.
         * @type {number || null}
         */
        this.SearchEngineCount = null;

        /**
         * Total number of image understanding responses.
         * @type {number || null}
         */
        this.ImageUnderstandingCount = null;

        /**
         * Total number of responses to rejected questions.
         * @type {number || null}
         */
        this.RejectCount = null;

        /**
         * Total number of sensitive responses.
         * @type {number || null}
         */
        this.SensitiveCount = null;

        /**
         * Total number of responses for concurrency exceeded.
         * @type {number || null}
         */
        this.ConcurrentLimitCount = null;

        /**
         * Total number of unknown question responses.
         * @type {number || null}
         */
        this.UnknownIssuesCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.ModelReplyCount = 'ModelReplyCount' in params ? params.ModelReplyCount : null;
        this.KnowledgeCount = 'KnowledgeCount' in params ? params.KnowledgeCount : null;
        this.TaskFlowCount = 'TaskFlowCount' in params ? params.TaskFlowCount : null;
        this.SearchEngineCount = 'SearchEngineCount' in params ? params.SearchEngineCount : null;
        this.ImageUnderstandingCount = 'ImageUnderstandingCount' in params ? params.ImageUnderstandingCount : null;
        this.RejectCount = 'RejectCount' in params ? params.RejectCount : null;
        this.SensitiveCount = 'SensitiveCount' in params ? params.SensitiveCount : null;
        this.ConcurrentLimitCount = 'ConcurrentLimitCount' in params ? params.ConcurrentLimitCount : null;
        this.UnknownIssuesCount = 'UnknownIssuesCount' in params ? params.UnknownIssuesCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeQA request structure.
 * @class
 */
class DescribeQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A business ID.

         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * Label reference information.
 * @class
 */
class AttrLabelRefer extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label source, 1: label.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttributeBizId = null;

        /**
         * Label value ID.
         * @type {Array.<string> || null}
         */
        this.LabelBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Source = 'Source' in params ? params.Source : null;
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;
        this.LabelBizIds = 'LabelBizIds' in params ? params.LabelBizIds : null;

    }
}

/**
 * Configuration information for creating a smart document parsing task.
 * @class
 */
class CreateReconstructDocumentFlowConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * The returned form of a table in a markdown file: 
0: the table is returned in MD format;
1: the table is returned in HTML form.
The default is 1.
         * @type {string || null}
         */
        this.TableResultType = null;

        /**
         * The format of smart document parsing results:
0: only return full-text MD;
1: only return OCR original JSON of each page;.
2: only return MD of each page;
3: return full-text MD + OCR original JSON of each page;.
4: return full-text MD + MD of each page.
The default value is 3 (return full-text MD + OCR original JSON of each page).

         * @type {string || null}
         */
        this.ResultType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TableResultType = 'TableResultType' in params ? params.TableResultType : null;
        this.ResultType = 'ResultType' in params ? params.ResultType : null;

    }
}

/**
 * DescribeUnsatisfiedReplyContext request structure.
 * @class
 */
class DescribeUnsatisfiedReplyContextRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Response ID.
         * @type {string || null}
         */
        this.ReplyBizId = null;

        /**
         * Log in to user's root account (required in the integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReplyBizId = 'ReplyBizId' in params ? params.ReplyBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * Execution process information log.
 * @class
 */
class Procedure extends  AbstractModel {
    constructor(){
        super();

        /**
         * English name of execution process.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Chinese name for display.
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Status: processing, success, failed.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Number of consumed tokens.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Debugging information.
         * @type {ProcedureDebugging || null}
         */
        this.Debugging = null;

        /**
         * Billing resource status, 1: available; 2: unavailable.
         * @type {number || null}
         */
        this.ResourceStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Title = 'Title' in params ? params.Title : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Count = 'Count' in params ? params.Count : null;

        if (params.Debugging) {
            let obj = new ProcedureDebugging();
            obj.deserialize(params.Debugging)
            this.Debugging = obj;
        }
        this.ResourceStatus = 'ResourceStatus' in params ? params.ResourceStatus : null;

    }
}

/**
 * ListApp request structure.
 * @class
 */
class ListAppRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Number of items per page, integer.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Page number, integer.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Keywords: application / modifier.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * Label details.
 * @class
 */
class AttrLabel extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label source.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttrBizId = null;

        /**
         * Label identification.
         * @type {string || null}
         */
        this.AttrKey = null;

        /**
         * Label name.
         * @type {string || null}
         */
        this.AttrName = null;

        /**
         * Label value.
         * @type {Array.<Label> || null}
         */
        this.Labels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Source = 'Source' in params ? params.Source : null;
        this.AttrBizId = 'AttrBizId' in params ? params.AttrBizId : null;
        this.AttrKey = 'AttrKey' in params ? params.AttrKey : null;
        this.AttrName = 'AttrName' in params ? params.AttrName : null;

        if (params.Labels) {
            this.Labels = new Array();
            for (let z in params.Labels) {
                let obj = new Label();
                obj.deserialize(params.Labels[z]);
                this.Labels.push(obj);
            }
        }

    }
}

/**
 * ModifyQAAttrRange request structure.
 * @class
 */
class ModifyQAAttrRangeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Q&A ID.
         * @type {Array.<string> || null}
         */
        this.QaBizIds = null;

        /**
         * Applicable scope of attribute label: 1: all, 2: by conditions.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Attribute label reference.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.QaBizIds = 'QaBizIds' in params ? params.QaBizIds : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }

    }
}

/**
 * Obtain ws token label.
 * @class
 */
class GetWsTokenReq_Label extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Label value.
         * @type {Array.<string> || null}
         */
        this.Values = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Values = 'Values' in params ? params.Values : null;

    }
}

/**
 * ModifyDoc response structure.
 * @class
 */
class ModifyDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Release document details.
 * @class
 */
class ReleaseDoc extends  AbstractModel {
    constructor(){
        super();

        /**
         * File name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Action = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.ActionDesc = null;

        /**
         * Reason for failure.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Document business ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Action = 'Action' in params ? params.Action : null;
        this.ActionDesc = 'ActionDesc' in params ? params.ActionDesc : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * Retrieval configuration.
 * @class
 */
class KnowledgeQaSearch extends  AbstractModel {
    constructor(){
        super();

        /**
         * Knowledge source: doc (document), qa (question & answering), taskflow (business process), search (search enhancement).
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Q&A - reply flexibility, 1: directly reply if the answer has been accepted. 2: reply after the accepted answer has been polished.
         * @type {number || null}
         */
        this.ReplyFlexibility = null;

        /**
         * Search enhancement - search engine status.
         * @type {boolean || null}
         */
        this.UseSearchEngine = null;

        /**
         * Whether to display the search engine retrieval status.
         * @type {boolean || null}
         */
        this.ShowSearchEngine = null;

        /**
         * Knowledge source, whether to select.
         * @type {boolean || null}
         */
        this.IsEnabled = null;

        /**
         * Maximum number of Q&A recalls, defaults to 2, limited to 5.
         * @type {number || null}
         */
        this.QaTopN = null;

        /**
         * Maximum number of documents recalls, defaults to 3, limited to 5.
         * @type {number || null}
         */
        this.DocTopN = null;

        /**
         * Retrieval confidence degree, valid for documents and Q&A. Value range: 0.01 - 0.99.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Resource status, 1: the resource is available; 2: the resource is exhausted.
         * @type {number || null}
         */
        this.ResourceStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.ReplyFlexibility = 'ReplyFlexibility' in params ? params.ReplyFlexibility : null;
        this.UseSearchEngine = 'UseSearchEngine' in params ? params.UseSearchEngine : null;
        this.ShowSearchEngine = 'ShowSearchEngine' in params ? params.ShowSearchEngine : null;
        this.IsEnabled = 'IsEnabled' in params ? params.IsEnabled : null;
        this.QaTopN = 'QaTopN' in params ? params.QaTopN : null;
        this.DocTopN = 'DocTopN' in params ? params.DocTopN : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.ResourceStatus = 'ResourceStatus' in params ? params.ResourceStatus : null;

    }
}

/**
 * CreateCorp response structure.
 * @class
 */
class CreateCorpResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Corporate ID.
         * @type {string || null}
         */
        this.CorpBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CorpBizId = 'CorpBizId' in params ? params.CorpBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListQA request structure.
 * @class
 */
class ListQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Page size.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query a question.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Verification status (1: not verified 2: adopted 3: not adopted).
         * @type {Array.<number> || null}
         */
        this.AcceptStatus = null;

        /**
         * Release status (2: pending release; 3: releasing; 4: released; 7: under review; 8: review failed; 9: under manual appeal; 11: manual appeal failed; 12: expired; 13: excessive invalid; 14: excessive invalid recovered).
         * @type {Array.<number> || null}
         */
        this.ReleaseStatus = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Source (1: generated from document; 2: import in batches; 3: manually added).
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Query an answer.
         * @type {string || null}
         */
        this.QueryAnswer = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Q&A business ID list.
         * @type {Array.<string> || null}
         */
        this.QaBizIds = null;

        /**
         * Query type: filename; attribute label.
         * @type {string || null}
         */
        this.QueryType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.AcceptStatus = 'AcceptStatus' in params ? params.AcceptStatus : null;
        this.ReleaseStatus = 'ReleaseStatus' in params ? params.ReleaseStatus : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.QueryAnswer = 'QueryAnswer' in params ? params.QueryAnswer : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.QaBizIds = 'QaBizIds' in params ? params.QaBizIds : null;
        this.QueryType = 'QueryType' in params ? params.QueryType : null;

    }
}

/**
 * DescribeKnowledgeUsage response structure.
 * @class
 */
class DescribeKnowledgeUsageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The upper limit of available characters.
         * @type {string || null}
         */
        this.AvailableCharSize = null;

        /**
         * Number of characters exceeding the capacity limit of available characters.
         * @type {string || null}
         */
        this.ExceedCharSize = null;

        /**
         * Total number of characters used in the knowledge library.
         * @type {string || null}
         */
        this.UsedCharSize = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AvailableCharSize = 'AvailableCharSize' in params ? params.AvailableCharSize : null;
        this.ExceedCharSize = 'ExceedCharSize' in params ? params.ExceedCharSize : null;
        this.UsedCharSize = 'UsedCharSize' in params ? params.UsedCharSize : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Reference source details.
 * @class
 */
class ReferDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reference ID.
         * @type {string || null}
         */
        this.ReferBizId = null;

        /**
         * Document type (1: Q&A; 2: document paragraph).
         * @type {number || null}
         */
        this.DocType = null;

        /**
         * Document name.
         * @type {string || null}
         */
        this.DocName = null;

        /**
         * Fragment content.
         * @type {string || null}
         */
        this.PageContent = null;

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.
         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Confidence.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Mark.
         * @type {number || null}
         */
        this.Mark = null;

        /**
         * Fragment highlight content.
         * @type {Array.<Highlight> || null}
         */
        this.Highlights = null;

        /**
         * Original content.
         * @type {string || null}
         */
        this.OrgData = null;

        /**
         * Page number information.
         * @type {Array.<number> || null}
         */
        this.PageInfos = null;

        /**
         * Sheet information.
         * @type {Array.<string> || null}
         */
        this.SheetInfos = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReferBizId = 'ReferBizId' in params ? params.ReferBizId : null;
        this.DocType = 'DocType' in params ? params.DocType : null;
        this.DocName = 'DocName' in params ? params.DocName : null;
        this.PageContent = 'PageContent' in params ? params.PageContent : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Mark = 'Mark' in params ? params.Mark : null;

        if (params.Highlights) {
            this.Highlights = new Array();
            for (let z in params.Highlights) {
                let obj = new Highlight();
                obj.deserialize(params.Highlights[z]);
                this.Highlights.push(obj);
            }
        }
        this.OrgData = 'OrgData' in params ? params.OrgData : null;
        this.PageInfos = 'PageInfos' in params ? params.PageInfos : null;
        this.SheetInfos = 'SheetInfos' in params ? params.SheetInfos : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * ListUnsatisfiedReply request structure.
 * @class
 */
class ListUnsatisfiedReplyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * User request (question or answer).
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Error type retrieval.
         * @type {Array.<string> || null}
         */
        this.Reasons = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.Reasons = 'Reasons' in params ? params.Reasons : null;

    }
}

/**
 * DeleteQA request structure.
 * @class
 */
class DeleteQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Q&A ID.
         * @type {Array.<string> || null}
         */
        this.QaBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.QaBizIds = 'QaBizIds' in params ? params.QaBizIds : null;

    }
}

/**
 * GetLikeDataCount response structure.
 * @class
 */
class GetLikeDataCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of messages that can be evaluated.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Number of comments.
         * @type {number || null}
         */
        this.AppraisalTotal = null;

        /**
         * Participation rate.
         * @type {number || null}
         */
        this.ParticipationRate = null;

        /**
         * Number of likes.
         * @type {number || null}
         */
        this.LikeTotal = null;

        /**
         * Like rate.
         * @type {number || null}
         */
        this.LikeRate = null;

        /**
         * Number of dislikes.
         * @type {number || null}
         */
        this.DislikeTotal = null;

        /**
         * Dislike rate.
         * @type {number || null}
         */
        this.DislikeRate = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.AppraisalTotal = 'AppraisalTotal' in params ? params.AppraisalTotal : null;
        this.ParticipationRate = 'ParticipationRate' in params ? params.ParticipationRate : null;
        this.LikeTotal = 'LikeTotal' in params ? params.LikeTotal : null;
        this.LikeRate = 'LikeRate' in params ? params.LikeRate : null;
        this.DislikeTotal = 'DislikeTotal' in params ? params.DislikeTotal : null;
        this.DislikeRate = 'DislikeRate' in params ? params.DislikeRate : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListRelease request structure.
 * @class
 */
class ListReleaseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Robot ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;

    }
}

/**
 * Detailed information of a knowledge library capacity pie chart.
 * @class
 */
class KnowledgeCapacityPieGraphDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Current application name.
         * @type {string || null}
         */
        this.AppName = null;

        /**
         * Number of characters used by the current application.
         * @type {string || null}
         */
        this.UsedCharSize = null;

        /**
         * Proportion of the current application in total usage.
         * @type {number || null}
         */
        this.Proportion = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppName = 'AppName' in params ? params.AppName : null;
        this.UsedCharSize = 'UsedCharSize' in params ? params.UsedCharSize : null;
        this.Proportion = 'Proportion' in params ? params.Proportion : null;

    }
}

/**
 * CreateDocCate request structure.
 * @class
 */
class CreateDocCateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Parent business ID.
         * @type {string || null}
         */
        this.ParentBizId = null;

        /**
         * Category name.

         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ParentBizId = 'ParentBizId' in params ? params.ParentBizId : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * Information of the requested API.
 * @class
 */
class InvokeAPI extends  AbstractModel {
    constructor(){
        super();

        /**
         * Request method, such as get/post.
         * @type {string || null}
         */
        this.Method = null;

        /**
         * Request address.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Header parameter.
         * @type {Array.<StrValue> || null}
         */
        this.HeaderValues = null;

        /**
         * Input parameter Query.
         * @type {Array.<StrValue> || null}
         */
        this.QueryValues = null;

        /**
         * Original data of a Post request.
         * @type {string || null}
         */
        this.RequestPostBody = null;

        /**
         * Returned original data.
         * @type {string || null}
         */
        this.ResponseBody = null;

        /**
         * Output parameter.
         * @type {Array.<ValueInfo> || null}
         */
        this.ResponseValues = null;

        /**
         * Exception information.
         * @type {string || null}
         */
        this.FailMessage = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Method = 'Method' in params ? params.Method : null;
        this.Url = 'Url' in params ? params.Url : null;

        if (params.HeaderValues) {
            this.HeaderValues = new Array();
            for (let z in params.HeaderValues) {
                let obj = new StrValue();
                obj.deserialize(params.HeaderValues[z]);
                this.HeaderValues.push(obj);
            }
        }

        if (params.QueryValues) {
            this.QueryValues = new Array();
            for (let z in params.QueryValues) {
                let obj = new StrValue();
                obj.deserialize(params.QueryValues[z]);
                this.QueryValues.push(obj);
            }
        }
        this.RequestPostBody = 'RequestPostBody' in params ? params.RequestPostBody : null;
        this.ResponseBody = 'ResponseBody' in params ? params.ResponseBody : null;

        if (params.ResponseValues) {
            this.ResponseValues = new Array();
            for (let z in params.ResponseValues) {
                let obj = new ValueInfo();
                obj.deserialize(params.ResponseValues[z]);
                this.ResponseValues.push(obj);
            }
        }
        this.FailMessage = 'FailMessage' in params ? params.FailMessage : null;

    }
}

/**
 * Knowledge summary output configuration.
 * @class
 */
class SummaryOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Output method: 1. streaming; 2. non-streaming.
         * @type {number || null}
         */
        this.Method = null;

        /**
         * Output requirement 1: text summary. 2: customized requirement.
         * @type {number || null}
         */
        this.Requirement = null;

        /**
         * Custom requirement command.
         * @type {string || null}
         */
        this.RequireCommand = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Method = 'Method' in params ? params.Method : null;
        this.Requirement = 'Requirement' in params ? params.Requirement : null;
        this.RequireCommand = 'RequireCommand' in params ? params.RequireCommand : null;

    }
}

/**
 * ModifyApp response structure.
 * @class
 */
class ModifyAppResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListDoc response structure.
 * @class
 */
class ListDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of documents.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * List of documents.
         * @type {Array.<ListDocItem> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ListDocItem();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyQA request structure.
 * @class
 */
class ModifyQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.
         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Custom parameter.
         * @type {string || null}
         */
        this.CustomParam = null;

        /**
         * Applicable scope of labels: 1. all; 2. by conditions.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Label reference.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp, 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Similar question modification information (not passed if there is no modification to the similar question).
         * @type {SimilarQuestionModify || null}
         */
        this.SimilarQuestionModify = null;

        /**
         * Problem description.
         * @type {string || null}
         */
        this.QuestionDesc = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.CustomParam = 'CustomParam' in params ? params.CustomParam : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;

        if (params.SimilarQuestionModify) {
            let obj = new SimilarQuestionModify();
            obj.deserialize(params.SimilarQuestionModify)
            this.SimilarQuestionModify = obj;
        }
        this.QuestionDesc = 'QuestionDesc' in params ? params.QuestionDesc : null;

    }
}

/**
 * Task process information.
 * @class
 */
class TaskFlowInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow ID.
         * @type {string || null}
         */
        this.TaskFlowId = null;

        /**
         * Task flow name.
         * @type {string || null}
         */
        this.TaskFlowName = null;

        /**
         * Rewrite results of query.
         * @type {string || null}
         */
        this.QueryRewrite = null;

        /**
         * Hit intent.
         * @type {string || null}
         */
        this.HitIntent = null;

        /**
         * Task flow response type.
0: Task flow response.
1: Silent task flow.
2: Pull back script of workflow.
3: Custom response of task flow.
         * @type {number || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskFlowId = 'TaskFlowId' in params ? params.TaskFlowId : null;
        this.TaskFlowName = 'TaskFlowName' in params ? params.TaskFlowName : null;
        this.QueryRewrite = 'QueryRewrite' in params ? params.QueryRewrite : null;
        this.HitIntent = 'HitIntent' in params ? params.HitIntent : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * GetDocPreview request structure.
 * @class
 */
class GetDocPreviewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document BizID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Storage type: offline - offline file; realtime - real-time file. If empty, it defaults to offline.
         * @type {string || null}
         */
        this.TypeKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.TypeKey = 'TypeKey' in params ? params.TypeKey : null;

    }
}

/**
 * ListDocCate response structure.
 * @class
 */
class ListDocCateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List.
         * @type {Array.<CateInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new CateInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListRejectedQuestionPreview response structure.
 * @class
 */
class ListRejectedQuestionPreviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity of documents.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * List of documents.
         * @type {Array.<ReleaseRejectedQuestion> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReleaseRejectedQuestion();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeCorp request structure.
 * @class
 */
class DescribeCorpRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ListAppCategory response structure.
 * @class
 */
class ListAppCategoryResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application type list.
         * @type {Array.<ListAppCategoryRspOption> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ListAppCategoryRspOption();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateApp response structure.
 * @class
 */
class CreateAppResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Whether the account application list permissions are customized. A user interaction prompt.
         * @type {boolean || null}
         */
        this.IsCustomList = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.IsCustomList = 'IsCustomList' in params ? params.IsCustomList : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttributeLabel request structure.
 * @class
 */
class DescribeAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Attribute ID.
         * @type {string || null}
         */
        this.AttributeBizId = null;

        /**
         * Quantity loaded each time. 
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Log in to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Query a label or similar labels.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * The label ID of the scroll loading cursor.
         * @type {string || null}
         */
        this.LastLabelBizId = null;

        /**
         * Query scope: 
all (or leave it blank): standard words and similar words 
standard: standard words 
similar: similar words
         * @type {string || null}
         */
        this.QueryScope = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.LastLabelBizId = 'LastLabelBizId' in params ? params.LastLabelBizId : null;
        this.QueryScope = 'QueryScope' in params ? params.QueryScope : null;

    }
}

/**
 * CreateQA request structure.
 * @class
 */
class CreateQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.
         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Applicable scope of labels: 1. all; 2. by conditions.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Custom parameter.
         * @type {string || null}
         */
        this.CustomParam = null;

        /**
         * Label reference.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Similar question content.
         * @type {Array.<string> || null}
         */
        this.SimilarQuestions = null;

        /**
         * Question description.
         * @type {string || null}
         */
        this.QuestionDesc = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;
        this.CustomParam = 'CustomParam' in params ? params.CustomParam : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;
        this.SimilarQuestions = 'SimilarQuestions' in params ? params.SimilarQuestions : null;
        this.QuestionDesc = 'QuestionDesc' in params ? params.QuestionDesc : null;

    }
}

/**
 * Retrieve knowledge.
 * @class
 */
class KnowledgeSummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * 1: Q&A; 2: document fragment.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Knowledge content.
         * @type {string || null}
         */
        this.Content = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Content = 'Content' in params ? params.Content : null;

    }
}

/**
 * Task process debugging information.
 * @class
 */
class TaskFlowSummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow name.
         * @type {string || null}
         */
        this.IntentName = null;

        /**
         * Entity list.
         * @type {Array.<ValueInfo> || null}
         */
        this.UpdatedSlotValues = null;

        /**
         * Node list.
         * @type {Array.<RunNodeInfo> || null}
         */
        this.RunNodes = null;

        /**
         * Intent determination.
         * @type {Array.<string> || null}
         */
        this.Purposes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IntentName = 'IntentName' in params ? params.IntentName : null;

        if (params.UpdatedSlotValues) {
            this.UpdatedSlotValues = new Array();
            for (let z in params.UpdatedSlotValues) {
                let obj = new ValueInfo();
                obj.deserialize(params.UpdatedSlotValues[z]);
                this.UpdatedSlotValues.push(obj);
            }
        }

        if (params.RunNodes) {
            this.RunNodes = new Array();
            for (let z in params.RunNodes) {
                let obj = new RunNodeInfo();
                obj.deserialize(params.RunNodes[z]);
                this.RunNodes.push(obj);
            }
        }
        this.Purposes = 'Purposes' in params ? params.Purposes : null;

    }
}

/**
 * CreateCorp request structure.
 * @class
 */
class CreateCorpRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Full name of the corporate.
         * @type {string || null}
         */
        this.FullName = null;

        /**
         * Contact person's name.
         * @type {string || null}
         */
        this.ContactName = null;

        /**
         * Contact person's mailbox.
         * @type {string || null}
         */
        this.Email = null;

        /**
         * Contact person's mobile phone number.
         * @type {string || null}
         */
        this.Telephone = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FullName = 'FullName' in params ? params.FullName : null;
        this.ContactName = 'ContactName' in params ? params.ContactName : null;
        this.Email = 'Email' in params ? params.Email : null;
        this.Telephone = 'Telephone' in params ? params.Telephone : null;

    }
}

/**
 * RetryDocParse request structure.
 * @class
 */
class RetryDocParseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * Q&A details data.
 * @class
 */
class ListQaItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.
         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Source.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Source description.
         * @type {string || null}
         */
        this.SourceDesc = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Whether editing is allowed.
         * @type {boolean || null}
         */
        this.IsAllowEdit = null;

        /**
         * Whether deletion is allowed.
         * @type {boolean || null}
         */
        this.IsAllowDelete = null;

        /**
         * Whether verification is allowed.
         * @type {boolean || null}
         */
        this.IsAllowAccept = null;

        /**
         * Document name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Document type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Number of Q&A characters.
         * @type {string || null}
         */
        this.QaCharSize = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Applicable range of attribute label, 1: all, 2: by conditions.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Attribute label.
         * @type {Array.<AttrLabel> || null}
         */
        this.AttrLabels = null;

        /**
         * Count of similar questions.
         * @type {number || null}
         */
        this.SimilarQuestionNum = null;

        /**
         * Return similar questions associated with the Q&A and perform linked search. Only one similar question will be displayed.
         * @type {string || null}
         */
        this.SimilarQuestionTips = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.SourceDesc = 'SourceDesc' in params ? params.SourceDesc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.IsAllowEdit = 'IsAllowEdit' in params ? params.IsAllowEdit : null;
        this.IsAllowDelete = 'IsAllowDelete' in params ? params.IsAllowDelete : null;
        this.IsAllowAccept = 'IsAllowAccept' in params ? params.IsAllowAccept : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.QaCharSize = 'QaCharSize' in params ? params.QaCharSize : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabel();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.SimilarQuestionNum = 'SimilarQuestionNum' in params ? params.SimilarQuestionNum : null;
        this.SimilarQuestionTips = 'SimilarQuestionTips' in params ? params.SimilarQuestionTips : null;

    }
}

/**
 * DeleteAttributeLabel request structure.
 * @class
 */
class DeleteAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Label ID.
         * @type {Array.<string> || null}
         */
        this.AttributeBizIds = null;

        /**
         * Log in to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.AttributeBizIds = 'AttributeBizIds' in params ? params.AttributeBizIds : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * DescribeRobotBizIDByAppKey response structure.
 * @class
 */
class DescribeRobotBizIDByAppKeyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application business ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RenameDoc response structure.
 * @class
 */
class RenameDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListDocCate request structure.
 * @class
 */
class ListDocCateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * DescribeDoc response structure.
 * @class
 */
class DescribeDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * File name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * COS path.
         * @type {string || null}
         */
        this.CosUrl = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Document status : 1: not generated; 2: generating; 3: generation successful; 4: generation failed; 5: deleting; 6: deleted successfully; 7: under review; 8: review failed; 9: review successful; 10: pending release; 11: releasing; 12: released; 13: learning; 14: learning failed; 15: updating; 16: update failed; 17: parsing; 18: parsing failed; 19: import failed; 20: expired; 21: excessive invalid; 22: excessive invalid recovered.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Document status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Reason for generation failure.
         * @type {string || null}
         */
        this.Reason = null;

        /**
         * Whether to refer in the answer.
         * @type {boolean || null}
         */
        this.IsRefer = null;

        /**
         * Number of Q&A pairs.
         * @type {number || null}
         */
        this.QaNum = null;

        /**
         * Whether to delete.
         * @type {boolean || null}
         */
        this.IsDeleted = null;

        /**
         * Document source.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Document source description.
         * @type {string || null}
         */
        this.SourceDesc = null;

        /**
         * Whether regeneration is allowed.
         * @type {boolean || null}
         */
        this.IsAllowRestart = null;

        /**
         * Whether Q&A has been deleted.
         * @type {boolean || null}
         */
        this.IsDeletedQa = null;

        /**
         * Whether Q&A is being generated.
         * @type {boolean || null}
         */
        this.IsCreatingQa = null;

        /**
         * Whether deletion is allowed.
         * @type {boolean || null}
         */
        this.IsAllowDelete = null;

        /**
         * Whether to allow operation reference switch.
         * @type {boolean || null}
         */
        this.IsAllowRefer = null;

        /**
         * Whether Q&A has been generated.
         * @type {boolean || null}
         */
        this.IsCreatedQa = null;

        /**
         * Document character count.
         * @type {string || null}
         */
        this.DocCharSize = null;

        /**
         * Whether editing is allowed.
         * @type {boolean || null}
         */
        this.IsAllowEdit = null;

        /**
         * Applicable scope of labels 1: all, 2: by condition range.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Label.
         * @type {Array.<AttrLabel> || null}
         */
        this.AttrLabels = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.CosUrl = 'CosUrl' in params ? params.CosUrl : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.Reason = 'Reason' in params ? params.Reason : null;
        this.IsRefer = 'IsRefer' in params ? params.IsRefer : null;
        this.QaNum = 'QaNum' in params ? params.QaNum : null;
        this.IsDeleted = 'IsDeleted' in params ? params.IsDeleted : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.SourceDesc = 'SourceDesc' in params ? params.SourceDesc : null;
        this.IsAllowRestart = 'IsAllowRestart' in params ? params.IsAllowRestart : null;
        this.IsDeletedQa = 'IsDeletedQa' in params ? params.IsDeletedQa : null;
        this.IsCreatingQa = 'IsCreatingQa' in params ? params.IsCreatingQa : null;
        this.IsAllowDelete = 'IsAllowDelete' in params ? params.IsAllowDelete : null;
        this.IsAllowRefer = 'IsAllowRefer' in params ? params.IsAllowRefer : null;
        this.IsCreatedQa = 'IsCreatedQa' in params ? params.IsCreatedQa : null;
        this.DocCharSize = 'DocCharSize' in params ? params.DocCharSize : null;
        this.IsAllowEdit = 'IsAllowEdit' in params ? params.IsAllowEdit : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabel();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateRelease request structure.
 * @class
 */
class CreateReleaseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Robot ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Release description.
         * @type {string || null}
         */
        this.Desc = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Desc = 'Desc' in params ? params.Desc : null;

    }
}

/**
 * Label ID.
 * @class
 */
class Label extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label ID.
         * @type {string || null}
         */
        this.LabelBizId = null;

        /**
         * Label name.
         * @type {string || null}
         */
        this.LabelName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LabelBizId = 'LabelBizId' in params ? params.LabelBizId : null;
        this.LabelName = 'LabelName' in params ? params.LabelName : null;

    }
}

/**
 * Process information of the thought event.
 * @class
 */
class AgentProcedure extends  AbstractModel {
    constructor(){
        super();

        /**
         * Index.
         * @type {number || null}
         */
        this.Index = null;

        /**
         * English name of the execution process.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Chinese name for display.
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Status constant: processing; success; failed.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Icon.
         * @type {string || null}
         */
        this.Icon = null;

        /**
         * Agent debugging information.
         * @type {AgentProcedureDebugging || null}
         */
        this.Debugging = null;

        /**
         * Whether to switch to Agent. The value can be "main" or "workflow". Leave it blank for no switch.
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Current request execution time, in milliseconds.
         * @type {number || null}
         */
        this.Elapsed = null;

        /**
         * Workflow node name.
         * @type {string || null}
         */
        this.NodeName = null;

        /**
         * Used to display in which reply bubble the thoughts are placed.
         * @type {number || null}
         */
        this.ReplyIndex = null;

        /**
         * Main agent.
         * @type {string || null}
         */
        this.SourceAgentName = null;

        /**
         * Registration agent.
         * @type {string || null}
         */
        this.TargetAgentName = null;

        /**
         * Icon of Agent.
         * @type {string || null}
         */
        this.AgentIcon = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Index = 'Index' in params ? params.Index : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Title = 'Title' in params ? params.Title : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Icon = 'Icon' in params ? params.Icon : null;

        if (params.Debugging) {
            let obj = new AgentProcedureDebugging();
            obj.deserialize(params.Debugging)
            this.Debugging = obj;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.Elapsed = 'Elapsed' in params ? params.Elapsed : null;
        this.NodeName = 'NodeName' in params ? params.NodeName : null;
        this.ReplyIndex = 'ReplyIndex' in params ? params.ReplyIndex : null;
        this.SourceAgentName = 'SourceAgentName' in params ? params.SourceAgentName : null;
        this.TargetAgentName = 'TargetAgentName' in params ? params.TargetAgentName : null;
        this.AgentIcon = 'AgentIcon' in params ? params.AgentIcon : null;

    }
}

/**
 * Application management output configuration.
 * @class
 */
class KnowledgeQaOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Output method, 1: streaming 2: non-streaming.
         * @type {number || null}
         */
        this.Method = null;

        /**
         * General model response.
         * @type {boolean || null}
         */
        this.UseGeneralKnowledge = null;

        /**
         * Unknown response, within 300 characters.
         * @type {string || null}
         */
        this.BareAnswer = null;

        /**
         * Whether to display the question clarification switch.
         * @type {boolean || null}
         */
        this.ShowQuestionClarify = null;

        /**
         * Whether to enable question clarification.
         * @type {boolean || null}
         */
        this.UseQuestionClarify = null;

        /**
         * List of keywords for question clarification.
         * @type {Array.<string> || null}
         */
        this.QuestionClarifyKeywords = null;

        /**
         * Whether to enable recommended questions.
         * @type {boolean || null}
         */
        this.UseRecommended = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Method = 'Method' in params ? params.Method : null;
        this.UseGeneralKnowledge = 'UseGeneralKnowledge' in params ? params.UseGeneralKnowledge : null;
        this.BareAnswer = 'BareAnswer' in params ? params.BareAnswer : null;
        this.ShowQuestionClarify = 'ShowQuestionClarify' in params ? params.ShowQuestionClarify : null;
        this.UseQuestionClarify = 'UseQuestionClarify' in params ? params.UseQuestionClarify : null;
        this.QuestionClarifyKeywords = 'QuestionClarifyKeywords' in params ? params.QuestionClarifyKeywords : null;
        this.UseRecommended = 'UseRecommended' in params ? params.UseRecommended : null;

    }
}

/**
 * ModifyRejectedQuestion request structure.
 * @class
 */
class ModifyRejectedQuestionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Rejected question.


         * @type {string || null}
         */
        this.Question = null;

        /**
         * Unique id of the data source for the rejected question source.



         * @type {string || null}
         */
        this.RejectedBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.RejectedBizId = 'RejectedBizId' in params ? params.RejectedBizId : null;

    }
}

/**
 * Data of custom variable and label relationship.
 * @class
 */
class ApiVarAttrInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Custom variable ID.
         * @type {string || null}
         */
        this.ApiVarId = null;

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttrBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ApiVarId = 'ApiVarId' in params ? params.ApiVarId : null;
        this.AttrBizId = 'AttrBizId' in params ? params.AttrBizId : null;

    }
}

/**
 * The thinking process of Agent.
 * @class
 */
class AgentThought extends  AbstractModel {
    constructor(){
        super();

        /**
         * Session ID.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Request ID
         * @type {string || null}
         */
        this.RequestId = null;

        /**
         * It corresponds to a session, session ID, used for message storage in answering. It can be generated in advance and used when saving messages.
         * @type {string || null}
         */
        this.RecordId = null;

        /**
         * Current request execution time, in milliseconds.
         * @type {number || null}
         */
        this.Elapsed = null;

        /**
         * Whether it is a workflow currently.
         * @type {boolean || null}
         */
        this.IsWorkflow = null;

        /**
         * If it is a workflow, workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Detailed thinking process.
         * @type {Array.<AgentProcedure> || null}
         */
        this.Procedures = null;

        /**
         * TraceId.
         * @type {string || null}
         */
        this.TraceId = null;

        /**
         * File information
         * @type {Array.<FileInfo> || null}
         */
        this.Files = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
        this.RecordId = 'RecordId' in params ? params.RecordId : null;
        this.Elapsed = 'Elapsed' in params ? params.Elapsed : null;
        this.IsWorkflow = 'IsWorkflow' in params ? params.IsWorkflow : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;

        if (params.Procedures) {
            this.Procedures = new Array();
            for (let z in params.Procedures) {
                let obj = new AgentProcedure();
                obj.deserialize(params.Procedures[z]);
                this.Procedures.push(obj);
            }
        }
        this.TraceId = 'TraceId' in params ? params.TraceId : null;

        if (params.Files) {
            this.Files = new Array();
            for (let z in params.Files) {
                let obj = new FileInfo();
                obj.deserialize(params.Files[z]);
                this.Files.push(obj);
            }
        }

    }
}

/**
 * GroupDoc request structure.
 * @class
 */
class GroupDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * List of business IDs of operation objects.
         * @type {Array.<string> || null}
         */
        this.BizIds = null;

        /**
         * Group ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.BizIds = 'BizIds' in params ? params.BizIds : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * CheckAttributeLabelRefer request structure.
 * @class
 */
class CheckAttributeLabelReferRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Log in to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Attribute label.
         * @type {string || null}
         */
        this.LabelBizId = null;

        /**
         * Attribute ID.
         * @type {Array.<string> || null}
         */
        this.AttributeBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.LabelBizId = 'LabelBizId' in params ? params.LabelBizId : null;
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;

    }
}

/**
 * ModifyQACate request structure.
 * @class
 */
class ModifyQACateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Category name.

         * @type {string || null}
         */
        this.Name = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * Knowledge library retrieval strategy.
 * @class
 */
class SearchStrategy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieval strategy type, 0: hybrid retrieval; 1: semantic retrieval.
         * @type {number || null}
         */
        this.StrategyType = null;

        /**
         * Excel retrieval enhancement switch.
         * @type {boolean || null}
         */
        this.TableEnhancement = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StrategyType = 'StrategyType' in params ? params.StrategyType : null;
        this.TableEnhancement = 'TableEnhancement' in params ? params.TableEnhancement : null;

    }
}

/**
 * ModifyAttributeLabel request structure.
 * @class
 */
class ModifyAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttributeBizId = null;

        /**
         * Label name.
         * @type {string || null}
         */
        this.AttrName = null;

        /**
         * Label identifier (abolished).
         * @type {string || null}
         */
        this.AttrKey = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Deleted label value.
         * @type {Array.<string> || null}
         */
        this.DeleteLabelBizIds = null;

        /**
         * Newly-added or edited label.
         * @type {Array.<AttributeLabel> || null}
         */
        this.Labels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;
        this.AttrName = 'AttrName' in params ? params.AttrName : null;
        this.AttrKey = 'AttrKey' in params ? params.AttrKey : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.DeleteLabelBizIds = 'DeleteLabelBizIds' in params ? params.DeleteLabelBizIds : null;

        if (params.Labels) {
            this.Labels = new Array();
            for (let z in params.Labels) {
                let obj = new AttributeLabel();
                obj.deserialize(params.Labels[z]);
                this.Labels.push(obj);
            }
        }

    }
}

/**
 * Debug information.
 * @class
 */
class ProcedureDebugging extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieve query.
         * @type {string || null}
         */
        this.Content = null;

        /**
         * System prompt.
         * @type {string || null}
         */
        this.System = null;

        /**
         * Multiple rounds of historical information.
         * @type {Array.<HistorySummary> || null}
         */
        this.Histories = null;

        /**
         * Retrieve knowledge.
         * @type {Array.<KnowledgeSummary> || null}
         */
        this.Knowledge = null;

        /**
         * Task process.
         * @type {TaskFlowSummary || null}
         */
        this.TaskFlow = null;

        /**
         * Workflow debugging information.
         * @type {WorkFlowSummary || null}
         */
        this.WorkFlow = null;

        /**
         * Agent debugging information.
         * @type {AgentDebugInfo || null}
         */
        this.Agent = null;

        /**
         * Custom parameter.
         * @type {Array.<string> || null}
         */
        this.CustomVariables = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Content = 'Content' in params ? params.Content : null;
        this.System = 'System' in params ? params.System : null;

        if (params.Histories) {
            this.Histories = new Array();
            for (let z in params.Histories) {
                let obj = new HistorySummary();
                obj.deserialize(params.Histories[z]);
                this.Histories.push(obj);
            }
        }

        if (params.Knowledge) {
            this.Knowledge = new Array();
            for (let z in params.Knowledge) {
                let obj = new KnowledgeSummary();
                obj.deserialize(params.Knowledge[z]);
                this.Knowledge.push(obj);
            }
        }

        if (params.TaskFlow) {
            let obj = new TaskFlowSummary();
            obj.deserialize(params.TaskFlow)
            this.TaskFlow = obj;
        }

        if (params.WorkFlow) {
            let obj = new WorkFlowSummary();
            obj.deserialize(params.WorkFlow)
            this.WorkFlow = obj;
        }

        if (params.Agent) {
            let obj = new AgentDebugInfo();
            obj.deserialize(params.Agent)
            this.Agent = obj;
        }
        this.CustomVariables = 'CustomVariables' in params ? params.CustomVariables : null;

    }
}

/**
 * Label value.
 * @class
 */
class AttributeLabel extends  AbstractModel {
    constructor(){
        super();

        /**
         * Standard word ID.
         * @type {string || null}
         */
        this.LabelBizId = null;

        /**
         * Standard word name.
         * @type {string || null}
         */
        this.LabelName = null;

        /**
         * Synonym name.
         * @type {Array.<string> || null}
         */
        this.SimilarLabels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LabelBizId = 'LabelBizId' in params ? params.LabelBizId : null;
        this.LabelName = 'LabelName' in params ? params.LabelName : null;
        this.SimilarLabels = 'SimilarLabels' in params ? params.SimilarLabels : null;

    }
}

/**
 * Dropdown options.
 * @class
 */
class Option extends  AbstractModel {
    constructor(){
        super();

        /**
         * Text.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * Value.
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Number of characters in a file.
         * @type {string || null}
         */
        this.CharSize = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Text = 'Text' in params ? params.Text : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.CharSize = 'CharSize' in params ? params.CharSize : null;
        this.FileType = 'FileType' in params ? params.FileType : null;

    }
}

/**
 * ListUnsatisfiedReply response structure.
 * @class
 */
class ListUnsatisfiedReplyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * List of dissatisfied responses.
         * @type {Array.<UnsatisfiedReply> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new UnsatisfiedReply();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetAppSecret request structure.
 * @class
 */
class GetAppSecretRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;

    }
}

/**
 * Model parameter value range.
 * @class
 */
class ModelParameter extends  AbstractModel {
    constructor(){
        super();

        /**
         * Default value.
         * @type {number || null}
         */
        this.Default = null;

        /**
         * Minimum value.
         * @type {number || null}
         */
        this.Min = null;

        /**
         * Maximum value.
         * @type {number || null}
         */
        this.Max = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Default = 'Default' in params ? params.Default : null;
        this.Min = 'Min' in params ? params.Min : null;
        this.Max = 'Max' in params ? params.Max : null;

    }
}

/**
 * DeleteQACate response structure.
 * @class
 */
class DeleteQACateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SaveDoc response structure.
 * @class
 */
class SaveDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Import error message.
         * @type {string || null}
         */
        this.ErrorMsg = null;

        /**
         * Error link.
         * @type {string || null}
         */
        this.ErrorLink = null;

        /**
         * Error link text.
         * @type {string || null}
         */
        this.ErrorLinkText = null;

        /**
         * 
         * @type {number || null}
         */
        this.DuplicateFileCheckType = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.ErrorMsg = 'ErrorMsg' in params ? params.ErrorMsg : null;
        this.ErrorLink = 'ErrorLink' in params ? params.ErrorLink : null;
        this.ErrorLinkText = 'ErrorLinkText' in params ? params.ErrorLinkText : null;
        this.DuplicateFileCheckType = 'DuplicateFileCheckType' in params ? params.DuplicateFileCheckType : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListReleaseDocPreview response structure.
 * @class
 */
class ListReleaseDocPreviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document quantity.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * Document list.
         * @type {Array.<ReleaseDoc> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReleaseDoc();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RenameDoc request structure.
 * @class
 */
class RenameDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Login to user's root account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * New document name, which needs to include the suffix.
         * @type {string || null}
         */
        this.NewName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.NewName = 'NewName' in params ? params.NewName : null;

    }
}

/**
 * Knowledge summary application configuration.
 * @class
 */
class SummaryConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model configuration.
         * @type {AppModel || null}
         */
        this.Model = null;

        /**
         * Knowledge summary output configuration.
         * @type {SummaryOutput || null}
         */
        this.Output = null;

        /**
         * Welcome words, within 200 characters.
         * @type {string || null}
         */
        this.Greeting = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Model) {
            let obj = new AppModel();
            obj.deserialize(params.Model)
            this.Model = obj;
        }

        if (params.Output) {
            let obj = new SummaryOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Greeting = 'Greeting' in params ? params.Greeting : null;

    }
}

/**
 * GenerateQA response structure.
 * @class
 */
class GenerateQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetTaskStatus response structure.
 * @class
 */
class GetTaskStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task type.
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Task status.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Task messages.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Task parameters.
         * @type {TaskParams || null}
         */
        this.Params = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Params) {
            let obj = new TaskParams();
            obj.deserialize(params.Params)
            this.Params = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeConcurrencyUsageGraph request structure.
 * @class
 */
class DescribeConcurrencyUsageGraphRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * uin
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Sub-business type.
         * @type {string || null}
         */
        this.SubBizType = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.SubBizType = 'SubBizType' in params ? params.SubBizType : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;

    }
}

/**
 * DescribeDoc request structure.
 * @class
 */
class DescribeDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * Debugging information of the agent thinking process.
 * @class
 */
class AgentProcedureDebugging extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model thinking content.
         * @type {string || null}
         */
        this.Content = null;

        /**
         * The specific text content to be displayed.
         * @type {string || null}
         */
        this.DisplayContent = null;

        /**
         * Display type.
         * @type {number || null}
         */
        this.DisplayType = null;

        /**
         * Index displayed by the search engine.
         * @type {Array.<QuoteInfo> || null}
         */
        this.QuoteInfos = null;

        /**
         * Specific reference source.
         * @type {Array.<AgentReference> || null}
         */
        this.References = null;

        /**
         * Display the ongoing status.
         * @type {string || null}
         */
        this.DisplayStatus = null;

        /**
         * URL of cloud desktop.
         * @type {string || null}
         */
        this.SandboxUrl = null;

        /**
         * URL opened through the browser in cloud desktop.
         * @type {string || null}
         */
        this.DisplayUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Content = 'Content' in params ? params.Content : null;
        this.DisplayContent = 'DisplayContent' in params ? params.DisplayContent : null;
        this.DisplayType = 'DisplayType' in params ? params.DisplayType : null;

        if (params.QuoteInfos) {
            this.QuoteInfos = new Array();
            for (let z in params.QuoteInfos) {
                let obj = new QuoteInfo();
                obj.deserialize(params.QuoteInfos[z]);
                this.QuoteInfos.push(obj);
            }
        }

        if (params.References) {
            this.References = new Array();
            for (let z in params.References) {
                let obj = new AgentReference();
                obj.deserialize(params.References[z]);
                this.References.push(obj);
            }
        }
        this.DisplayStatus = 'DisplayStatus' in params ? params.DisplayStatus : null;
        this.SandboxUrl = 'SandboxUrl' in params ? params.SandboxUrl : null;
        this.DisplayUrl = 'DisplayUrl' in params ? params.DisplayUrl : null;

    }
}

/**
 * DescribeTokenUsageGraph request structure.
 * @class
 */
class DescribeTokenUsageGraphRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Root account of Tencent Cloud.
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Sub-business types of Tencent Cloud Agent Development Platform/ADP: fileparse (document parsing), Embedding, Rewrite (multi-round rewriting), Concurrency, KnowledgeSummary (knowledge summary), KnowledgeQA (knowledge Q&A), KnowledgeCapacity (knowledge base capacity), SearchEngine (search engine).
         * @type {string || null}
         */
        this.SubBizType = null;

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

        /**
         * 
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.SubScenes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.SubBizType = 'SubBizType' in params ? params.SubBizType : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.SubScenes = 'SubScenes' in params ? params.SubScenes : null;

    }
}

/**
 * RetryDocAudit request structure.
 * @class
 */
class RetryDocAuditRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * 
 * @class
 */
class VoiceConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {number || null}
         */
        this.VoiceType = null;

        /**
         * 
         * @type {string || null}
         */
        this.TimbreKey = null;

        /**
         * 
         * @type {string || null}
         */
        this.VoiceName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VoiceType = 'VoiceType' in params ? params.VoiceType : null;
        this.TimbreKey = 'TimbreKey' in params ? params.TimbreKey : null;
        this.VoiceName = 'VoiceName' in params ? params.VoiceName : null;

    }
}

/**
 * SaveDoc request structure.
 * @class
 */
class SaveDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * File name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File type (md|txt|docx|pdf|xlsx).
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * The cos path of the platform, consistent with the UploadPath parameter queried by the DescribeStorageCredential api.
         * @type {string || null}
         */
        this.CosUrl = null;

        /**
         * ETag, short for entity tag, is an information tag that identifies the content of an object when it is created and can be used to check whether the content of the object has changed.
         * @type {string || null}
         */
        this.ETag = null;

        /**
         * Verify the consistency of the uploaded file on the cloud and the local file by validating the crc64 encoding in the cos_hash x-cos-hash-crc64ecma header.<br> After the COS is successfully uploaded, obtain it from the response header.
         * @type {string || null}
         */
        this.CosHash = null;

        /**
         * File size.
         * @type {string || null}
         */
        this.Size = null;

        /**
         * Applicable scope of labels: 1: all; 2: by conditional range.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Source (0: source file import; 1: web page import).
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Web page (or custom link) address.
         * @type {string || null}
         */
        this.WebUrl = null;

        /**
         * Label reference.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

        /**
         * External reference link type: 0: system link; 1: custom link.
When the value is 1, the weburl field cannot be empty; otherwise, it will not take effect.
         * @type {number || null}
         */
        this.ReferUrlType = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Whether to reference a link.
         * @type {boolean || null}
         */
        this.IsRefer = null;

        /**
         * Document operation type: 1: batch import (import Q&A pairs in batches); 2: document import (normally import a single document). The default value is 1.<br>Please note that when opt = 1, please download the Excel template from the Tencent Cloud Agent Development Platform/ADP page.
         * @type {number || null}
         */
        this.Opt = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * 
         * @type {boolean || null}
         */
        this.IsDownload = null;

        /**
         * 
         * @type {Array.<DuplicateFileHandle> || null}
         */
        this.DuplicateFileHandles = null;

        /**
         * 
         * @type {string || null}
         */
        this.SplitRule = null;

        /**
         * 
         * @type {UpdatePeriodInfo || null}
         */
        this.UpdatePeriodInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.CosUrl = 'CosUrl' in params ? params.CosUrl : null;
        this.ETag = 'ETag' in params ? params.ETag : null;
        this.CosHash = 'CosHash' in params ? params.CosHash : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.WebUrl = 'WebUrl' in params ? params.WebUrl : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.ReferUrlType = 'ReferUrlType' in params ? params.ReferUrlType : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;
        this.IsRefer = 'IsRefer' in params ? params.IsRefer : null;
        this.Opt = 'Opt' in params ? params.Opt : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.IsDownload = 'IsDownload' in params ? params.IsDownload : null;

        if (params.DuplicateFileHandles) {
            this.DuplicateFileHandles = new Array();
            for (let z in params.DuplicateFileHandles) {
                let obj = new DuplicateFileHandle();
                obj.deserialize(params.DuplicateFileHandles[z]);
                this.DuplicateFileHandles.push(obj);
            }
        }
        this.SplitRule = 'SplitRule' in params ? params.SplitRule : null;

        if (params.UpdatePeriodInfo) {
            let obj = new UpdatePeriodInfo();
            obj.deserialize(params.UpdatePeriodInfo)
            this.UpdatePeriodInfo = obj;
        }

    }
}

/**
 * Document parsing failure record.
 * @class
 */
class ReconstructDocumentFailedPage extends  AbstractModel {
    constructor(){
        super();

        /**
         * Failure page number.
         * @type {number || null}
         */
        this.PageNumber = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;

    }
}

/**
 * ListAppKnowledgeDetail response structure.
 * @class
 */
class ListAppKnowledgeDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of lists.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Details of knowledge base capacity usage by application.
         * @type {Array.<KnowledgeDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new KnowledgeDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyQACate response structure.
 * @class
 */
class ModifyQACateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAttributeLabel response structure.
 * @class
 */
class DescribeAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Attribute ID.
         * @type {string || null}
         */
        this.AttributeBizId = null;

        /**
         * Attribute identifier.
         * @type {string || null}
         */
        this.AttrKey = null;

        /**
         * Attribute name.
         * @type {string || null}
         */
        this.AttrName = null;

        /**
         * Quantity of labels.
         * @type {string || null}
         */
        this.LabelNumber = null;

        /**
         * Label name.
         * @type {Array.<AttributeLabel> || null}
         */
        this.Labels = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AttributeBizId = 'AttributeBizId' in params ? params.AttributeBizId : null;
        this.AttrKey = 'AttrKey' in params ? params.AttrKey : null;
        this.AttrName = 'AttrName' in params ? params.AttrName : null;
        this.LabelNumber = 'LabelNumber' in params ? params.LabelNumber : null;

        if (params.Labels) {
            this.Labels = new Array();
            for (let z in params.Labels) {
                let obj = new AttributeLabel();
                obj.deserialize(params.Labels[z]);
                this.Labels.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Specifies the single workflow configuration in Q&A knowledge library single workflow mode.
 * @class
 */
class KnowledgeQaSingleWorkflow extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Workflow description.
         * @type {string || null}
         */
        this.WorkflowDesc = null;

        /**
         * Workflow status, publishing status (UNPUBLISHED; PUBLISHING; PUBLISHED; FAIL).
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Whether to enable workflow.
         * @type {boolean || null}
         */
        this.IsEnable = null;

        /**
         * Whether to enable asynchronous call of the workflow.
         * @type {boolean || null}
         */
        this.AsyncWorkflow = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.WorkflowDesc = 'WorkflowDesc' in params ? params.WorkflowDesc : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsEnable = 'IsEnable' in params ? params.IsEnable : null;
        this.AsyncWorkflow = 'AsyncWorkflow' in params ? params.AsyncWorkflow : null;

    }
}

/**
 * ListQACate response structure.
 * @class
 */
class ListQACateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List.
         * @type {Array.<QACate> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new QACate();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RetryDocParse response structure.
 * @class
 */
class RetryDocParseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateRejectedQuestion response structure.
 * @class
 */
class CreateRejectedQuestionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListReleaseQAPreview response structure.
 * @class
 */
class ListReleaseQAPreviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document quantity.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * The list of documents.
         * @type {Array.<ReleaseQA> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReleaseQA();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportUnsatisfiedReply request structure.
 * @class
 */
class ExportUnsatisfiedReplyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Check to export ID list.
         * @type {Array.<string> || null}
         */
        this.ReplyBizIds = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Retrieve filter.
         * @type {Filters || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReplyBizIds = 'ReplyBizIds' in params ? params.ReplyBizIds : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

        if (params.Filters) {
            let obj = new Filters();
            obj.deserialize(params.Filters)
            this.Filters = obj;
        }

    }
}

/**
 * GroupQA response structure.
 * @class
 */
class GroupQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Search engine reference source index.
 * @class
 */
class QuoteInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reference source location.
         * @type {number || null}
         */
        this.Position = null;

        /**
         * Reference source index sequence.
         * @type {string || null}
         */
        this.Index = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Position = 'Position' in params ? params.Position : null;
        this.Index = 'Index' in params ? params.Index : null;

    }
}

/**
 * CreateApp request structure.
 * @class
 */
class CreateAppRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application type; knowledge_qa - knowledge qa management.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Basic application configuration.
         * @type {BaseConfig || null}
         */
        this.BaseConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppType = 'AppType' in params ? params.AppType : null;

        if (params.BaseConfig) {
            let obj = new BaseConfig();
            obj.deserialize(params.BaseConfig)
            this.BaseConfig = obj;
        }

    }
}

/**
 * Application configuration.
 * @class
 */
class AppConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Knowledge Q&A management application configuration
         * @type {KnowledgeQaConfig || null}
         */
        this.KnowledgeQa = null;

        /**
         * Knowledge summary application configuration.
         * @type {SummaryConfig || null}
         */
        this.Summary = null;

        /**
         * Label extraction application configuration.
         * @type {ClassifyConfig || null}
         */
        this.Classify = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.KnowledgeQa) {
            let obj = new KnowledgeQaConfig();
            obj.deserialize(params.KnowledgeQa)
            this.KnowledgeQa = obj;
        }

        if (params.Summary) {
            let obj = new SummaryConfig();
            obj.deserialize(params.Summary)
            this.Summary = obj;
        }

        if (params.Classify) {
            let obj = new ClassifyConfig();
            obj.deserialize(params.Classify)
            this.Classify = obj;
        }

    }
}

/**
 * DescribeRelease request structure.
 * @class
 */
class DescribeReleaseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Release details.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;

    }
}

/**
 * Release Q&A.
 * @class
 */
class ReleaseQA extends  AbstractModel {
    constructor(){
        super();

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Action = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.ActionDesc = null;

        /**
         * Source, 1: documentation generation; 2: batch import; 3: manual addition.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Source description.
         * @type {string || null}
         */
        this.SourceDesc = null;

        /**
         * Filename.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Document type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Reason for failure
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Release status.
         * @type {number || null}
         */
        this.ReleaseStatus = null;

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Document business ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Question = 'Question' in params ? params.Question : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Action = 'Action' in params ? params.Action : null;
        this.ActionDesc = 'ActionDesc' in params ? params.ActionDesc : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.SourceDesc = 'SourceDesc' in params ? params.SourceDesc : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.ReleaseStatus = 'ReleaseStatus' in params ? params.ReleaseStatus : null;
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * ListAppCategory request structure.
 * @class
 */
class ListAppCategoryRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ListReleaseConfigPreview request structure.
 * @class
 */
class ListReleaseConfigPreviewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Robot ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Release ticket ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * Status (1: newly-added; 2: updated; 3: deleted).
         * @type {Array.<number> || null}
         */
        this.Actions = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Release status.
         * @type {Array.<number> || null}
         */
        this.ReleaseStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.Actions = 'Actions' in params ? params.Actions : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.ReleaseStatus = 'ReleaseStatus' in params ? params.ReleaseStatus : null;

    }
}

/**
 * Call type.
 * @class
 */
class CallDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Associated ID.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Call time.
         * @type {string || null}
         */
        this.CallTime = null;

        /**
         * Total token consumption.
         * @type {number || null}
         */
        this.TotalTokenUsage = null;

        /**
         * Token consumption for input.
         * @type {number || null}
         */
        this.InputTokenUsage = null;

        /**
         * Token consumption for output.
         * @type {number || null}
         */
        this.OutputTokenUsage = null;

        /**
         * Number of search service calls.
         * @type {number || null}
         */
        this.SearchUsage = null;

        /**
         * Model name.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Call type.
         * @type {string || null}
         */
        this.CallType = null;

        /**
         * Account.
         * @type {string || null}
         */
        this.UinAccount = null;

        /**
         * Application name.
         * @type {string || null}
         */
        this.AppName = null;

        /**
         * Total number of consumed pages.
         * @type {number || null}
         */
        this.PageUsage = null;

        /**
         * Filter sub-scenario.
         * @type {string || null}
         */
        this.SubScene = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.CallTime = 'CallTime' in params ? params.CallTime : null;
        this.TotalTokenUsage = 'TotalTokenUsage' in params ? params.TotalTokenUsage : null;
        this.InputTokenUsage = 'InputTokenUsage' in params ? params.InputTokenUsage : null;
        this.OutputTokenUsage = 'OutputTokenUsage' in params ? params.OutputTokenUsage : null;
        this.SearchUsage = 'SearchUsage' in params ? params.SearchUsage : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.CallType = 'CallType' in params ? params.CallType : null;
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.AppName = 'AppName' in params ? params.AppName : null;
        this.PageUsage = 'PageUsage' in params ? params.PageUsage : null;
        this.SubScene = 'SubScene' in params ? params.SubScene : null;

    }
}

/**
 * 
 * @class
 */
class DocFilterFlag extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.Flag = null;

        /**
         * 
         * @type {boolean || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Flag = 'Flag' in params ? params.Flag : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * ListReleaseDocPreview request structure.
 * @class
 */
class ListReleaseDocPreviewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Release ticket ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Status (1: newly-added; 2: modified; 3: deleted).
         * @type {Array.<number> || null}
         */
        this.Actions = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.Actions = 'Actions' in params ? params.Actions : null;

    }
}

/**
 * Current executed token statistical information.
 * @class
 */
class TokenStat extends  AbstractModel {
    constructor(){
        super();

        /**
         * Session ID.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Request ID.
         * @type {string || null}
         */
        this.RequestId = null;

        /**
         * It corresponds to a session, session id, used for storing messages for answering. It can be generated in advance, used when saving messages.
         * @type {string || null}
         */
        this.RecordId = null;

        /**
         * Number of consumed tokens.
         * @type {number || null}
         */
        this.UsedCount = null;

        /**
         * Number of free tokens.
         * @type {number || null}
         */
        this.FreeCount = null;

        /**
         * Total number of tokens for orders.
         * @type {number || null}
         */
        this.OrderCount = null;

        /**
         * Current execution status summary. Constant: processing, success., failed.
         * @type {string || null}
         */
        this.StatusSummary = null;

        /**
         * Chinese display after summarizing the current execution status.
         * @type {string || null}
         */
        this.StatusSummaryTitle = null;

        /**
         * Current request execution time, in milliseconds.
         * @type {number || null}
         */
        this.Elapsed = null;

        /**
         * Number of tokens consumed by the current request.
         * @type {number || null}
         */
        this.TokenCount = null;

        /**
         * Execution information.
         * @type {Array.<Procedure> || null}
         */
        this.Procedures = null;

        /**
         * Execution process information TraceId.
         * @type {string || null}
         */
        this.TraceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;
        this.RecordId = 'RecordId' in params ? params.RecordId : null;
        this.UsedCount = 'UsedCount' in params ? params.UsedCount : null;
        this.FreeCount = 'FreeCount' in params ? params.FreeCount : null;
        this.OrderCount = 'OrderCount' in params ? params.OrderCount : null;
        this.StatusSummary = 'StatusSummary' in params ? params.StatusSummary : null;
        this.StatusSummaryTitle = 'StatusSummaryTitle' in params ? params.StatusSummaryTitle : null;
        this.Elapsed = 'Elapsed' in params ? params.Elapsed : null;
        this.TokenCount = 'TokenCount' in params ? params.TokenCount : null;

        if (params.Procedures) {
            this.Procedures = new Array();
            for (let z in params.Procedures) {
                let obj = new Procedure();
                obj.deserialize(params.Procedures[z]);
                this.Procedures.push(obj);
            }
        }
        this.TraceId = 'TraceId' in params ? params.TraceId : null;

    }
}

/**
 * Document fragment.
 * @class
 */
class DocSegment extends  AbstractModel {
    constructor(){
        super();

        /**
         * Fragment ID.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Business ID.
         * @type {string || null}
         */
        this.BusinessId = null;

        /**
         * File type (markdown, word, txt).
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Document segment type (segment, table).
         * @type {string || null}
         */
        this.SegmentType = null;

        /**
         * Title.
         * @type {string || null}
         */
        this.Title = null;

        /**
         * Paragraph content.
         * @type {string || null}
         */
        this.PageContent = null;

        /**
         * Original paragraph.
         * @type {string || null}
         */
        this.OrgData = null;

        /**
         * Article ID.
         * @type {string || null}
         */
        this.DocId = null;

        /**
         * Document business ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Document URL.
         * @type {string || null}
         */
        this.DocUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.BusinessId = 'BusinessId' in params ? params.BusinessId : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;
        this.Title = 'Title' in params ? params.Title : null;
        this.PageContent = 'PageContent' in params ? params.PageContent : null;
        this.OrgData = 'OrgData' in params ? params.OrgData : null;
        this.DocId = 'DocId' in params ? params.DocId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.DocUrl = 'DocUrl' in params ? params.DocUrl : null;

    }
}

/**
 * Unsatisfied response.
 * @class
 */
class UnsatisfiedReply extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unsatisfied response ID.
         * @type {string || null}
         */
        this.ReplyBizId = null;

        /**
         * Message record ID.
         * @type {string || null}
         */
        this.RecordBizId = null;

        /**
         * User question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Application response.
         * @type {string || null}
         */
        this.Answer = null;

        /**
         * Error type.
         * @type {Array.<string> || null}
         */
        this.Reasons = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReplyBizId = 'ReplyBizId' in params ? params.ReplyBizId : null;
        this.RecordBizId = 'RecordBizId' in params ? params.RecordBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;
        this.Reasons = 'Reasons' in params ? params.Reasons : null;

    }
}

/**
 * DescribeUnsatisfiedReplyContext response structure.
 * @class
 */
class DescribeUnsatisfiedReplyContextResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Context of dissatisfied responses.
         * @type {Array.<Context> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Context();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyDocAttrRange request structure.
 * @class
 */
class ModifyDocAttrRangeRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {Array.<string> || null}
         */
        this.DocBizIds = null;

        /**
         * Attribute label applicable scope: 1: all, 2: by conditions.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Attribute label reference.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizIds = 'DocBizIds' in params ? params.DocBizIds : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }

    }
}

/**
 * 
 * @class
 */
class DigitalHumanConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.AssetKey = null;

        /**
         * 
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 
         * @type {string || null}
         */
        this.Avatar = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AssetKey = 'AssetKey' in params ? params.AssetKey : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Avatar = 'Avatar' in params ? params.Avatar : null;

    }
}

/**
 * CreateRejectedQuestion request structure.
 * @class
 */
class CreateRejectedQuestionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Rejected question
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Unique ID of the data source for the rejected question - "2" will be returned when the rejected question is not satisfied - The rejected question comes from manual addition.
         * @type {number || null}
         */
        this.BusinessSource = null;

        /**
         * Unique ID of the data source for the rejected question.


         * @type {string || null}
         */
        this.BusinessId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.BusinessSource = 'BusinessSource' in params ? params.BusinessSource : null;
        this.BusinessId = 'BusinessId' in params ? params.BusinessId : null;

    }
}

/**
 * DescribeKnowledgeUsagePieGraph request structure.
 * @class
 */
class DescribeKnowledgeUsagePieGraphRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application id array.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;

    }
}

/**
 * Label details.
 * @class
 */
class AttrLabelDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttrBizId = null;

        /**
         * Label identification.
         * @type {string || null}
         */
        this.AttrKey = null;

        /**
         * Label name.
         * @type {string || null}
         */
        this.AttrName = null;

        /**
         * Label value name.
         * @type {Array.<string> || null}
         */
        this.LabelNames = null;

        /**
         * Whether the label is being updated.
         * @type {boolean || null}
         */
        this.IsUpdating = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Total number of label values.
         * @type {string || null}
         */
        this.LabelTotalCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AttrBizId = 'AttrBizId' in params ? params.AttrBizId : null;
        this.AttrKey = 'AttrKey' in params ? params.AttrKey : null;
        this.AttrName = 'AttrName' in params ? params.AttrName : null;
        this.LabelNames = 'LabelNames' in params ? params.LabelNames : null;
        this.IsUpdating = 'IsUpdating' in params ? params.IsUpdating : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.LabelTotalCount = 'LabelTotalCount' in params ? params.LabelTotalCount : null;

    }
}

/**
 * DescribeRefer response structure.
 * @class
 */
class DescribeReferResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reference list.
         * @type {Array.<ReferDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReferDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Obtain response of unsatisfied reply context.
 * @class
 */
class Context extends  AbstractModel {
    constructor(){
        super();

        /**
         * Message record ID.
         * @type {string || null}
         */
        this.RecordBizId = null;

        /**
         * Whether it is a user.
         * @type {boolean || null}
         */
        this.IsVisitor = null;

        /**
         * Nickname.
         * @type {string || null}
         */
        this.NickName = null;

        /**
         * Avatar.
         * @type {string || null}
         */
        this.Avatar = null;

        /**
         * Message content.
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Document information.
         * @type {Array.<MsgFileInfo> || null}
         */
        this.FileInfos = null;

        /**
         * Response method, 15: clarification confirmation response.
         * @type {number || null}
         */
        this.ReplyMethod = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RecordBizId = 'RecordBizId' in params ? params.RecordBizId : null;
        this.IsVisitor = 'IsVisitor' in params ? params.IsVisitor : null;
        this.NickName = 'NickName' in params ? params.NickName : null;
        this.Avatar = 'Avatar' in params ? params.Avatar : null;
        this.Content = 'Content' in params ? params.Content : null;

        if (params.FileInfos) {
            this.FileInfos = new Array();
            for (let z in params.FileInfos) {
                let obj = new MsgFileInfo();
                obj.deserialize(params.FileInfos[z]);
                this.FileInfos.push(obj);
            }
        }
        this.ReplyMethod = 'ReplyMethod' in params ? params.ReplyMethod : null;

    }
}

/**
 * ListDoc request structure.
 * @class
 */
class ListDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Quantity per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Document status : 1: not generated; 2: generating; 3: generation successful; 4: generation failed; 5: deleting; 6: deleted successfully; 7: under review; 8: review failed; 9: review successful; 10: pending release; 11: releasing; 12: released; 13: learning; 14: learning failed; 15: updating; 16: update failed; 17: parsing; 18: parsing failed; 19: import failed; 20: expired; 21: excessive invalid; 22: excessive invalid recovered.
         * @type {Array.<number> || null}
         */
        this.Status = null;

        /**
         * Query type: filename - document; attribute - label.
         * @type {string || null}
         */
        this.QueryType = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * File type classification and filtering.
         * @type {Array.<string> || null}
         */
        this.FileTypes = null;

        /**
         * Document list filter flag
         * @type {Array.<DocFilterFlag> || null}
         */
        this.FilterFlag = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.QueryType = 'QueryType' in params ? params.QueryType : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.FileTypes = 'FileTypes' in params ? params.FileTypes : null;

        if (params.FilterFlag) {
            this.FilterFlag = new Array();
            for (let z in params.FilterFlag) {
                let obj = new DocFilterFlag();
                obj.deserialize(params.FilterFlag[z]);
                this.FilterFlag.push(obj);
            }
        }

    }
}

/**
 * Q&A query parameter.
 * @class
 */
class QAQuery extends  AbstractModel {
    constructor(){
        super();

        /**
         * Page number.




         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.

         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Query content.

         * @type {string || null}
         */
        this.Query = null;

        /**
         * Category ID.

         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Verification status.

         * @type {Array.<number> || null}
         */
        this.AcceptStatus = null;

        /**
         * Release status.

         * @type {Array.<number> || null}
         */
        this.ReleaseStatus = null;

        /**
         * Document ID.

         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Source.


         * @type {number || null}
         */
        this.Source = null;

        /**
         * Query an answer.

         * @type {string || null}
         */
        this.QueryAnswer = null;

        /**
         * Query type: filename, attribute label.
         * @type {string || null}
         */
        this.QueryType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.AcceptStatus = 'AcceptStatus' in params ? params.AcceptStatus : null;
        this.ReleaseStatus = 'ReleaseStatus' in params ? params.ReleaseStatus : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.QueryAnswer = 'QueryAnswer' in params ? params.QueryAnswer : null;
        this.QueryType = 'QueryType' in params ? params.QueryType : null;

    }
}

/**
 * GroupQA request structure.
 * @class
 */
class GroupQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * List of QaBizIDs.
         * @type {Array.<string> || null}
         */
        this.QaBizIds = null;

        /**
         * Group ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.QaBizIds = 'QaBizIds' in params ? params.QaBizIds : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * 
 * @class
 */
class UpdatePeriodInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {number || null}
         */
        this.UpdatePeriodH = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UpdatePeriodH = 'UpdatePeriodH' in params ? params.UpdatePeriodH : null;

    }
}

/**
 * DescribeCallStatsGraph request structure.
 * @class
 */
class DescribeCallStatsGraphRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * uin
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Log in to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to user's root sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Sub-business type.
         * @type {string || null}
         */
        this.SubBizType = null;

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

        /**
         * Filter sub-scenarios (used in document parsing scenarios).
         * @type {Array.<string> || null}
         */
        this.SubScenes = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.SubBizType = 'SubBizType' in params ? params.SubBizType : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;
        this.SubScenes = 'SubScenes' in params ? params.SubScenes : null;

    }
}

/**
 * GetMsgRecord response structure.
 * @class
 */
class GetMsgRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Session record.
         * @type {Array.<MsgRecord> || null}
         */
        this.Records = null;

        /**
         * The time when session cleared associated context, in milliseconds.
         * @type {string || null}
         */
        this.SessionDisassociatedTimestamp = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Records) {
            this.Records = new Array();
            for (let z in params.Records) {
                let obj = new MsgRecord();
                obj.deserialize(params.Records[z]);
                this.Records.push(obj);
            }
        }
        this.SessionDisassociatedTimestamp = 'SessionDisassociatedTimestamp' in params ? params.SessionDisassociatedTimestamp : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeApp request structure.
 * @class
 */
class DescribeAppRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Whether it is the configuration after release.
         * @type {boolean || null}
         */
        this.IsRelease = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.IsRelease = 'IsRelease' in params ? params.IsRelease : null;

    }
}

/**
 * GetReconstructDocumentResult request structure.
 * @class
 */
class GetReconstructDocumentResultRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of the task. It is the TaskId returned by [CreateReconstructDocumentFlow](https://cloud.tencent.com/document/product/1759/107506).
         * @type {string || null}
         */
        this.TaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

    }
}

/**
 * DescribeKnowledgeUsage request structure.
 * @class
 */
class DescribeKnowledgeUsageRequest extends  AbstractModel {
    constructor(){
        super();

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

    }
}

/**
 * ListQA response structure.
 * @class
 */
class ListQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A quantity.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * Quantity of pending verification Q&As.
         * @type {string || null}
         */
        this.WaitVerifyTotal = null;

        /**
         * Quantity of not adopted Q&As.
         * @type {string || null}
         */
        this.NotAcceptedTotal = null;

        /**
         * Quantity of adopted Q&As.
         * @type {string || null}
         */
        this.AcceptedTotal = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Q&As details.
         * @type {Array.<ListQaItem> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.WaitVerifyTotal = 'WaitVerifyTotal' in params ? params.WaitVerifyTotal : null;
        this.NotAcceptedTotal = 'NotAcceptedTotal' in params ? params.NotAcceptedTotal : null;
        this.AcceptedTotal = 'AcceptedTotal' in params ? params.AcceptedTotal : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ListQaItem();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * IgnoreUnsatisfiedReply request structure.
 * @class
 */
class IgnoreUnsatisfiedReplyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Dissatisfied response ID.
         * @type {Array.<string> || null}
         */
        this.ReplyBizIds = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReplyBizIds = 'ReplyBizIds' in params ? params.ReplyBizIds : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * DescribeRelease response structure.
 * @class
 */
class DescribeReleaseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Publish description.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Release status (1. pending release; 2. releasing; 3. release successful; 4. release failed; 5. releasing (under review); 6. releasing (review completed); 7. release failed; 9. release paused).
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Release status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeConcurrencyUsageGraph response structure.
 * @class
 */
class DescribeConcurrencyUsageGraphResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * X-axis: time zone; returns two interval ranges of "minute/hour/day" according to the granularity of query conditions.
         * @type {Array.<string> || null}
         */
        this.X = null;

        /**
         * Available concurrent Y-axis coordinate.
         * @type {Array.<number> || null}
         */
        this.AvailableY = null;

        /**
         * Succeeded to call the concurrent Y-axis coordinate.
         * @type {Array.<number> || null}
         */
        this.SuccessCallY = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.X = 'X' in params ? params.X : null;
        this.AvailableY = 'AvailableY' in params ? params.AvailableY : null;
        this.SuccessCallY = 'SuccessCallY' in params ? params.SuccessCallY : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Description of document list details.
 * @class
 */
class ListDocItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * File name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * The new document name after renaming. This name remains until the document is published after the renaming submission.
         * @type {string || null}
         */
        this.NewName = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * COS path.
         * @type {string || null}
         */
        this.CosUrl = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Document status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Document status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Reason.
         * @type {string || null}
         */
        this.Reason = null;

        /**
         * Whether to refer to an answer.
         * @type {boolean || null}
         */
        this.IsRefer = null;

        /**
         * Quantity of Q&A pairs.
         * @type {number || null}
         */
        this.QaNum = null;

        /**
         * Whether it has been deleted.
         * @type {boolean || null}
         */
        this.IsDeleted = null;

        /**
         * Document source.
         * @type {number || null}
         */
        this.Source = null;

        /**
         * Document source description.
         * @type {string || null}
         */
        this.SourceDesc = null;

        /**
         * Whether regeneration is allowed.
         * @type {boolean || null}
         */
        this.IsAllowRestart = null;

        /**
         * Whether the Q&A has been deleted.
         * @type {boolean || null}
         */
        this.IsDeletedQa = null;

        /**
         * Whether the Q&A is being generated.
         * @type {boolean || null}
         */
        this.IsCreatingQa = null;

        /**
         * Whether deletion is allowed.
         * @type {boolean || null}
         */
        this.IsAllowDelete = null;

        /**
         * Whether to allow operation reference switch.
         * @type {boolean || null}
         */
        this.IsAllowRefer = null;

        /**
         * Whether Q&A has been generated.
         * @type {boolean || null}
         */
        this.IsCreatedQa = null;

        /**
         * Document character count.
         * @type {string || null}
         */
        this.DocCharSize = null;

        /**
         * Applicable range of attribute label.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Attribute label.
         * @type {Array.<AttrLabel> || null}
         */
        this.AttrLabels = null;

        /**
         * Whether editing is allowed.
         * @type {boolean || null}
         */
        this.IsAllowEdit = null;

        /**
         * External reference URL type, 0: system URL; 1: custom URL.
When the value is 1, the WebUrl field cannot be empty; otherwise, it will not take effect.
         * @type {number || null}
         */
        this.ReferUrlType = null;

        /**
         * Web page URL (or custom URL) .
         * @type {string || null}
         */
        this.WebUrl = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Whether retries are allowed, 0: no, 1: yes.
         * @type {boolean || null}
         */
        this.IsAllowRetry = null;

        /**
         * 0: document comparison processing; 1: Q&A generation from document.
         * @type {Array.<number> || null}
         */
        this.Processing = null;

        /**
         * Time when the document was created and stored into the database.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * ID of the document's category.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * User-defined ID of the document.
         * @type {string || null}
         */
        this.CustomerKnowledgeId = null;

        /**
         * Attribute label of the document. 0: Do not perform external user permission verification.
         * @type {Array.<number> || null}
         */
        this.AttributeFlags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.NewName = 'NewName' in params ? params.NewName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.CosUrl = 'CosUrl' in params ? params.CosUrl : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.Reason = 'Reason' in params ? params.Reason : null;
        this.IsRefer = 'IsRefer' in params ? params.IsRefer : null;
        this.QaNum = 'QaNum' in params ? params.QaNum : null;
        this.IsDeleted = 'IsDeleted' in params ? params.IsDeleted : null;
        this.Source = 'Source' in params ? params.Source : null;
        this.SourceDesc = 'SourceDesc' in params ? params.SourceDesc : null;
        this.IsAllowRestart = 'IsAllowRestart' in params ? params.IsAllowRestart : null;
        this.IsDeletedQa = 'IsDeletedQa' in params ? params.IsDeletedQa : null;
        this.IsCreatingQa = 'IsCreatingQa' in params ? params.IsCreatingQa : null;
        this.IsAllowDelete = 'IsAllowDelete' in params ? params.IsAllowDelete : null;
        this.IsAllowRefer = 'IsAllowRefer' in params ? params.IsAllowRefer : null;
        this.IsCreatedQa = 'IsCreatedQa' in params ? params.IsCreatedQa : null;
        this.DocCharSize = 'DocCharSize' in params ? params.DocCharSize : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabel();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.IsAllowEdit = 'IsAllowEdit' in params ? params.IsAllowEdit : null;
        this.ReferUrlType = 'ReferUrlType' in params ? params.ReferUrlType : null;
        this.WebUrl = 'WebUrl' in params ? params.WebUrl : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;
        this.IsAllowRetry = 'IsAllowRetry' in params ? params.IsAllowRetry : null;
        this.Processing = 'Processing' in params ? params.Processing : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.CustomerKnowledgeId = 'CustomerKnowledgeId' in params ? params.CustomerKnowledgeId : null;
        this.AttributeFlags = 'AttributeFlags' in params ? params.AttributeFlags : null;

    }
}

/**
 * VerifyQA request structure.
 * @class
 */
class VerifyQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A list.
         * @type {Array.<QAList> || null}
         */
        this.List = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new QAList();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * RateMsgRecord request structure.
 * @class
 */
class RateMsgRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application appkey.
         * @type {string || null}
         */
        this.BotAppKey = null;

        /**
         * Message ID.
         * @type {string || null}
         */
        this.RecordId = null;

        /**
         * 1: like; 2: dislike.
         * @type {number || null}
         */
        this.Score = null;

        /**
         * Reason.
         * @type {Array.<string> || null}
         */
        this.Reasons = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotAppKey = 'BotAppKey' in params ? params.BotAppKey : null;
        this.RecordId = 'RecordId' in params ? params.RecordId : null;
        this.Score = 'Score' in params ? params.Score : null;
        this.Reasons = 'Reasons' in params ? params.Reasons : null;

    }
}

/**
 * Application model configuration.
 * @class
 */
class AppModel extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Model description.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * The round referenced by the context.
         * @type {number || null}
         */
        this.ContextLimit = null;

        /**
         * Model alias.
         * @type {string || null}
         */
        this.AliasName = null;

        /**
         * Remaining token quota.
         * @type {number || null}
         */
        this.TokenBalance = null;

        /**
         * Whether to use the round referenced by the context.
         * @type {boolean || null}
         */
        this.IsUseContext = null;

        /**
         * The number of context memory rounds.
         * @type {number || null}
         */
        this.HistoryLimit = null;

        /**
         * Usage type.
         * @type {string || null}
         */
        this.UsageType = null;

        /**
         * Model temperature.
         * @type {string || null}
         */
        this.Temperature = null;

        /**
         * Model TopP.
         * @type {string || null}
         */
        this.TopP = null;

        /**
         * Model resource status: 1: available; 2: exhausted.
         * @type {number || null}
         */
        this.ResourceStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.ContextLimit = 'ContextLimit' in params ? params.ContextLimit : null;
        this.AliasName = 'AliasName' in params ? params.AliasName : null;
        this.TokenBalance = 'TokenBalance' in params ? params.TokenBalance : null;
        this.IsUseContext = 'IsUseContext' in params ? params.IsUseContext : null;
        this.HistoryLimit = 'HistoryLimit' in params ? params.HistoryLimit : null;
        this.UsageType = 'UsageType' in params ? params.UsageType : null;
        this.Temperature = 'Temperature' in params ? params.Temperature : null;
        this.TopP = 'TopP' in params ? params.TopP : null;
        this.ResourceStatus = 'ResourceStatus' in params ? params.ResourceStatus : null;

    }
}

/**
 * Billing statistical information.
 * @class
 */
class Stat extends  AbstractModel {
    constructor(){
        super();

        /**
         * X-axis: time zone; return three interval ranges of "minute/hour/day" according to the granularity of the query condition.
         * @type {string || null}
         */
        this.X = null;

        /**
         * Y-axis: statistical values in this time period, such as token consumption, call count, or usage information.
         * @type {number || null}
         */
        this.Y = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.X = 'X' in params ? params.X : null;
        this.Y = 'Y' in params ? params.Y : null;

    }
}

/**
 * DescribeKnowledgeUsagePieGraph response structure.
 * @class
 */
class DescribeKnowledgeUsagePieGraphResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of characters used by all applications.
         * @type {string || null}
         */
        this.AvailableCharSize = null;

        /**
         * List of application pie chart details.
         * @type {Array.<KnowledgeCapacityPieGraphDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AvailableCharSize = 'AvailableCharSize' in params ? params.AvailableCharSize : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new KnowledgeCapacityPieGraphDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListRejectedQuestion response structure.
 * @class
 */
class ListRejectedQuestionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * List of rejected questions.
         * @type {Array.<RejectedQuestion> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new RejectedQuestion();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Label information.
 * @class
 */
class ClassifyLabel extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Label description.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Label value range.
         * @type {Array.<string> || null}
         */
        this.Values = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Values = 'Values' in params ? params.Values : null;

    }
}

/**
 * DescribeTokenUsageGraph response structure.
 * @class
 */
class DescribeTokenUsageGraphResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total amount of token consumption.
         * @type {Array.<Stat> || null}
         */
        this.Total = null;

        /**
         * Input token consumption.
         * @type {Array.<Stat> || null}
         */
        this.Input = null;

        /**
         * Output token consumption.
         * @type {Array.<Stat> || null}
         */
        this.Output = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Total) {
            this.Total = new Array();
            for (let z in params.Total) {
                let obj = new Stat();
                obj.deserialize(params.Total[z]);
                this.Total.push(obj);
            }
        }

        if (params.Input) {
            this.Input = new Array();
            for (let z in params.Input) {
                let obj = new Stat();
                obj.deserialize(params.Input[z]);
                this.Input.push(obj);
            }
        }

        if (params.Output) {
            this.Output = new Array();
            for (let z in params.Output) {
                let obj = new Stat();
                obj.deserialize(params.Output[z]);
                this.Output.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Similar question modification (update) information.
 * @class
 */
class SimilarQuestionModify extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of similar questions (content) to be added.
         * @type {Array.<string> || null}
         */
        this.AddQuestions = null;

        /**
         * List of similar questions to be updated.
         * @type {Array.<SimilarQuestion> || null}
         */
        this.UpdateQuestions = null;

        /**
         * List of similar questions to be deleted.
         * @type {Array.<SimilarQuestion> || null}
         */
        this.DeleteQuestions = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AddQuestions = 'AddQuestions' in params ? params.AddQuestions : null;

        if (params.UpdateQuestions) {
            this.UpdateQuestions = new Array();
            for (let z in params.UpdateQuestions) {
                let obj = new SimilarQuestion();
                obj.deserialize(params.UpdateQuestions[z]);
                this.UpdateQuestions.push(obj);
            }
        }

        if (params.DeleteQuestions) {
            this.DeleteQuestions = new Array();
            for (let z in params.DeleteQuestions) {
                let obj = new SimilarQuestion();
                obj.deserialize(params.DeleteQuestions[z]);
                this.DeleteQuestions.push(obj);
            }
        }

    }
}

/**
 * Workflow running node information.
 * @class
 */
class WorkflowRunNodeInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Node ID.
         * @type {string || null}
         */
        this.NodeId = null;

        /**
         * Node type.
         * @type {number || null}
         */
        this.NodeType = null;

        /**
         * Node name.
         * @type {string || null}
         */
        this.NodeName = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Input..
         * @type {string || null}
         */
        this.Input = null;

        /**
         * Output.
         * @type {string || null}
         */
        this.Output = null;

        /**
         * Task output.
         * @type {string || null}
         */
        this.TaskOutput = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.FailMessage = null;

        /**
         * Time consumption.
         * @type {number || null}
         */
        this.CostMilliSeconds = null;

        /**
         * Large model output information.
         * @type {Array.<StatisticInfo> || null}
         */
        this.StatisticInfos = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NodeId = 'NodeId' in params ? params.NodeId : null;
        this.NodeType = 'NodeType' in params ? params.NodeType : null;
        this.NodeName = 'NodeName' in params ? params.NodeName : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Input = 'Input' in params ? params.Input : null;
        this.Output = 'Output' in params ? params.Output : null;
        this.TaskOutput = 'TaskOutput' in params ? params.TaskOutput : null;
        this.FailMessage = 'FailMessage' in params ? params.FailMessage : null;
        this.CostMilliSeconds = 'CostMilliSeconds' in params ? params.CostMilliSeconds : null;

        if (params.StatisticInfos) {
            this.StatisticInfos = new Array();
            for (let z in params.StatisticInfos) {
                let obj = new StatisticInfo();
                obj.deserialize(params.StatisticInfos[z]);
                this.StatisticInfos.push(obj);
            }
        }

    }
}

/**
 * Statistical information of large model tokens.
 * @class
 */
class StatisticInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model name.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Time consumption of the first token.
         * @type {number || null}
         */
        this.FirstTokenCost = null;

        /**
         * Total time consumption.
         * @type {number || null}
         */
        this.TotalCost = null;

        /**
         * Number of input tokens.
         * @type {number || null}
         */
        this.InputTokens = null;

        /**
         * Number of output tokens.
         * @type {number || null}
         */
        this.OutputTokens = null;

        /**
         * Total number of tokens.
         * @type {number || null}
         */
        this.TotalTokens = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.FirstTokenCost = 'FirstTokenCost' in params ? params.FirstTokenCost : null;
        this.TotalCost = 'TotalCost' in params ? params.TotalCost : null;
        this.InputTokens = 'InputTokens' in params ? params.InputTokens : null;
        this.OutputTokens = 'OutputTokens' in params ? params.OutputTokens : null;
        this.TotalTokens = 'TotalTokens' in params ? params.TotalTokens : null;

    }
}

/**
 * RetryDocAudit response structure.
 * @class
 */
class RetryDocAuditResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetReconstructDocumentResult response structure.
 * @class
 */
class GetReconstructDocumentResultResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status: success - execution completed; processing - executing; failed - execution failed; waitexecute - waiting to execute.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The result file of this document parsing task, stored in the download url of Tencent Cloud cos. The valid period of the download url is 10 minutes.
         * @type {string || null}
         */
        this.DocumentRecognizeResultUrl = null;

        /**
         * Page number information where document parsing failed this time.
         * @type {Array.<ReconstructDocumentFailedPage> || null}
         */
        this.FailedPages = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.DocumentRecognizeResultUrl = 'DocumentRecognizeResultUrl' in params ? params.DocumentRecognizeResultUrl : null;

        if (params.FailedPages) {
            this.FailedPages = new Array();
            for (let z in params.FailedPages) {
                let obj = new ReconstructDocumentFailedPage();
                obj.deserialize(params.FailedPages[z]);
                this.FailedPages.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyDocCate request structure.
 * @class
 */
class ModifyDocCateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Category name.

         * @type {string || null}
         */
        this.Name = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * RetryRelease response structure.
 * @class
 */
class RetryReleaseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetLikeDataCount request structure.
 * @class
 */
class GetLikeDataCountRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date.
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * End date.
         * @type {number || null}
         */
        this.EndTime = null;

        /**
         * Application ID.
         * @type {Array.<string> || null}
         */
        this.AppBizId = null;

        /**
         * Message source (1. shared from user end, 2. chat api).
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * DeleteRejectedQuestion response structure.
 * @class
 */
class DeleteRejectedQuestionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Temporary key structure.
 * @class
 */
class Credentials extends  AbstractModel {
    constructor(){
        super();

        /**
         * Token.
         * @type {string || null}
         */
        this.Token = null;

        /**
         * Temporary license key ID.
         * @type {string || null}
         */
        this.TmpSecretId = null;

        /**
         * Temporary license key.
         * @type {string || null}
         */
        this.TmpSecretKey = null;

        /**
         * Temporary license appid.
         * @type {number || null}
         */
        this.AppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Token = 'Token' in params ? params.Token : null;
        this.TmpSecretId = 'TmpSecretId' in params ? params.TmpSecretId : null;
        this.TmpSecretKey = 'TmpSecretKey' in params ? params.TmpSecretKey : null;
        this.AppId = 'AppId' in params ? params.AppId : null;

    }
}

/**
 * Document information.
 * @class
 */
class MsgFileInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Document name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Document size.
         * @type {string || null}
         */
        this.FileSize = null;

        /**
         * Document URL.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Document type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileSize = 'FileSize' in params ? params.FileSize : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.DocId = 'DocId' in params ? params.DocId : null;

    }
}

/**
 * CreateAttributeLabel request structure.
 * @class
 */
class CreateAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Label name.
         * @type {string || null}
         */
        this.AttrName = null;

        /**
         * Label value.
         * @type {Array.<AttributeLabel> || null}
         */
        this.Labels = null;

        /**
         * Label identification (not effective, no need to fill in) . Abolished.
         * @type {string || null}
         */
        this.AttrKey = null;

        /**
         * Log in to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Log in to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.AttrName = 'AttrName' in params ? params.AttrName : null;

        if (params.Labels) {
            this.Labels = new Array();
            for (let z in params.Labels) {
                let obj = new AttributeLabel();
                obj.deserialize(params.Labels[z]);
                this.Labels.push(obj);
            }
        }
        this.AttrKey = 'AttrKey' in params ? params.AttrKey : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * ListApp response structure.
 * @class
 */
class ListAppResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * Label list.
         * @type {Array.<AppInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new AppInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Application details
 * @class
 */
class AppInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Application type description.
         * @type {string || null}
         */
        this.AppTypeDesc = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Application name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Application avatar.
         * @type {string || null}
         */
        this.Avatar = null;

        /**
         * Application description.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Application status. 1: offline; 2: running; 3: disabled.
         * @type {number || null}
         */
        this.AppStatus = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.AppStatusDesc = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Last modifier.
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * Model name.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Alias of the generative model.
         * @type {string || null}
         */
        this.ModelAliasName = null;

        /**
         * Application mode: standard; agent; single_workflow.
         * @type {string || null}
         */
        this.Pattern = null;

        /**
         * Alias of the thought model.
         * @type {string || null}
         */
        this.ThoughtModelAliasName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.AppTypeDesc = 'AppTypeDesc' in params ? params.AppTypeDesc : null;
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Avatar = 'Avatar' in params ? params.Avatar : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.AppStatus = 'AppStatus' in params ? params.AppStatus : null;
        this.AppStatusDesc = 'AppStatusDesc' in params ? params.AppStatusDesc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.ModelAliasName = 'ModelAliasName' in params ? params.ModelAliasName : null;
        this.Pattern = 'Pattern' in params ? params.Pattern : null;
        this.ThoughtModelAliasName = 'ThoughtModelAliasName' in params ? params.ThoughtModelAliasName : null;

    }
}

/**
 * Category information.
 * @class
 */
class CateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Category name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Quantity of records (such as documents, synonyms, etc.) under the category.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Whether it is possible to add.
         * @type {boolean || null}
         */
        this.CanAdd = null;

        /**
         * Whether it can be edited.
         * @type {boolean || null}
         */
        this.CanEdit = null;

        /**
         * Whether it can be deleted.
         * @type {boolean || null}
         */
        this.CanDelete = null;

        /**
         * Subcategory.
         * @type {Array.<CateInfo> || null}
         */
        this.Children = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Total = 'Total' in params ? params.Total : null;
        this.CanAdd = 'CanAdd' in params ? params.CanAdd : null;
        this.CanEdit = 'CanEdit' in params ? params.CanEdit : null;
        this.CanDelete = 'CanDelete' in params ? params.CanDelete : null;

        if (params.Children) {
            this.Children = new Array();
            for (let z in params.Children) {
                let obj = new CateInfo();
                obj.deserialize(params.Children[z]);
                this.Children.push(obj);
            }
        }

    }
}

/**
 * CreateReconstructDocumentFlow request structure.
 * @class
 */
class CreateReconstructDocumentFlowRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * File type. Supported file types: pdf, doc, docx, ppt, pptx, md, txt, xls, xlsx, csv, png, jpg, jpeg, bmp, gif, webp, heic, eps, icns, im, pcx, ppm, tiff, xbm, heif, jp2.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * The base64 value of the file. File size limit: the downloaded file does not exceed 8m after base64 encoding. File download time does not exceed 3 seconds. Supported image pixels: the length of a single side is between 20-10000px. Either FileUrl or FileBase64 of the file must be provided. If both are provided, only the FileUrl is used.
         * @type {string || null}
         */
        this.FileBase64 = null;

        /**
         * <p>File URL. The file download time does not exceed 15 seconds. Supported image pixels: the length of a single side is between 20-10000px. It is recommended to store the file in Tencent Cloud as the URL where the file is stored in Tencent Cloud can ensure higher download speed and stability. External URL may affect the speed and stability. The downloaded file shall not exceed the supported file size after Base64 encoding: </p><table> <tbody> <tr> <td>File Type</td> <td>Supported File Size</td> </tr> <tr> <td>PDF</td> <td>200M</td> </tr> <tr> <td>DOC</td> <td>200M</td> </tr> <tr> <td>DOCX</td> <td>200M</td> </tr> <tr> <td>PPT</td> <td>200M</td> </tr> <tr> <td>PPTX</td> <td>200M</td> </tr> <tr> <td>MD</td> <td>10M</td> </tr> <tr> <td>TXT</td> <td>10M</td> </tr> <tr> <td>XLS</td> <td>20M</td> </tr> <tr> <td>XLSX</td> <td>20M</td> </tr> <tr> <td>CSV</td> <td>20M</td> </tr> <tr> <td>PNG</td> <td>20M</td> </tr> <tr> <td>JPG</td> <td>20M</td> </tr> <tr> <td>JPEG</td> <td>20M</td> </tr> <tr> <td>BMP</td> <td>20M</td> </tr> <tr> <td>GIF</td> <td>20M</td> </tr> <tr> <td>WEBP</td> <td>20M</td> </tr> <tr> <td>HEIC</td> <td>20M</td> </tr> <tr> <td>EPS</td> <td>20M</td> </tr> <tr> <td>ICNS</td> <td>20M</td> </tr> <tr> <td>IM</td> <td>20M</td> </tr> <tr> <td>PCX</td> <td>20M</td> </tr> <tr> <td>PPM</td> <td>20M</td> </tr> <tr> <td>TIFF</td> <td>20M</td> </tr> <tr> <td>XBM</td> <td>20M</td> </tr> <tr> <td>HEIF</td> <td>20M</td> </tr> <tr> <td>JP2</td> <td>20M</td> </tr> </tbody> <colgroup> <col> <col> </colgroup></table>
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * When type of the uploaded file is pdf, doc, docx, ppt, or pptx, it specifies the starting page number for file recognition, including the current value. The default is 1, indicating recognition starts from the first page of the file.
         * @type {number || null}
         */
        this.FileStartPageNumber = null;

        /**
         * When type of the uploaded file is pdf, doc, docx, orppt, pptx, it specifies the end page number for file recognition, including the current value. The default is 100, indicating recognition up to page 100 of the file. a single call supports recognition of up to 1000 pages, i.e., FileEndPageNumber-FileStartPageNumber should be no more than 1000.
         * @type {number || null}
         */
        this.FileEndPageNumber = null;

        /**
         * Configuration information for creating a document parsing task.
         * @type {CreateReconstructDocumentFlowConfig || null}
         */
        this.Config = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileBase64 = 'FileBase64' in params ? params.FileBase64 : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileStartPageNumber = 'FileStartPageNumber' in params ? params.FileStartPageNumber : null;
        this.FileEndPageNumber = 'FileEndPageNumber' in params ? params.FileEndPageNumber : null;

        if (params.Config) {
            let obj = new CreateReconstructDocumentFlowConfig();
            obj.deserialize(params.Config)
            this.Config = obj;
        }

    }
}

/**
 * Task flow parameter information.
 * @class
 */
class ValueInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Value ID.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Value type, 0: unknown or empty; 1: string; 2: integer; 3: float; 4: boolean; 5: array (string array); 6: object_array (structure array); 7: object (structure).
         * @type {number || null}
         */
        this.ValueType = null;

        /**
         * String.
         * @type {string || null}
         */
        this.ValueStr = null;

        /**
         * Int (return as a string to avoid precision loss).
         * @type {string || null}
         */
        this.ValueInt = null;

        /**
         * Float.
         * @type {number || null}
         */
        this.ValueFloat = null;

        /**
         * Bool.
         * @type {boolean || null}
         */
        this.ValueBool = null;

        /**
         * Array.
         * @type {Array.<string> || null}
         */
        this.ValueStrArray = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.ValueType = 'ValueType' in params ? params.ValueType : null;
        this.ValueStr = 'ValueStr' in params ? params.ValueStr : null;
        this.ValueInt = 'ValueInt' in params ? params.ValueInt : null;
        this.ValueFloat = 'ValueFloat' in params ? params.ValueFloat : null;
        this.ValueBool = 'ValueBool' in params ? params.ValueBool : null;
        this.ValueStrArray = 'ValueStrArray' in params ? params.ValueStrArray : null;

    }
}

/**
 * Knowledge Q&A configuration.
 * @class
 */
class KnowledgeQaConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Welcome words, within 200 characters.
         * @type {string || null}
         */
        this.Greeting = null;

        /**
         * Character description, within 4,000 characters. By filling out the description, set the #Character Name, #Style Characteristics, and reachable #Intent of the application. It is recommended to fill in according to the following template, with custom intents no more than 5. 
#Character Name:
#Style Characteristics:
#Output Requirements:
#Ability Limitations:
The following user intents can be reached.
##Intent Name:
##Intent Description:
##Intent Example:
##Intent Implementation:
         * @type {string || null}
         */
        this.RoleDescription = null;

        /**
         * Generative model configuration.
         * @type {AppModel || null}
         */
        this.Model = null;

        /**
         * Knowledge search configuration.
         * @type {Array.<KnowledgeQaSearch> || null}
         */
        this.Search = null;

        /**
         * Knowledge management output configuration.
         * @type {KnowledgeQaOutput || null}
         */
        this.Output = null;

        /**
         * Workflow configuration.
         * @type {KnowledgeWorkflow || null}
         */
        this.Workflow = null;

        /**
         * Retrieval range.
         * @type {SearchRange || null}
         */
        this.SearchRange = null;

        /**
         * Application modes: standard, agent, single_workflow.
         * @type {string || null}
         */
        this.Pattern = null;

        /**
         * Retrieve a policy.
         * @type {SearchStrategy || null}
         */
        this.SearchStrategy = null;

        /**
         * Single workflow ID, which is entered when Pattern is single_workflow.
         * @type {KnowledgeQaSingleWorkflow || null}
         */
        this.SingleWorkflow = null;

        /**
         * Application associated plug-in.
         * @type {Array.<KnowledgeQaPlugin> || null}
         */
        this.Plugins = null;

        /**
         * Thinking model configuration.
         * @type {AppModel || null}
         */
        this.ThoughtModel = null;

        /**
         * Priority of intent achievement methods.
         * @type {Array.<IntentAchievement> || null}
         */
        this.IntentAchievements = null;

        /**
         * Whether to enable Image-Text Search.
         * @type {boolean || null}
         */
        this.ImageTextRetrieval = null;

        /**
         * Configure voice call parameters.
         * @type {AICallConfig || null}
         */
        this.AiCall = null;

        /**
         * Session content moderation switch. Note: 1. This feature is enabled by default if no value is input. 2. Tencent Cloud provides a content pre-filtering feature to help filter high-risk or illegal content. If you do not use our filtering feature, you can disable it here. We hereby remind you that you are responsible for ensuring that your content complies with platform policies and laws and regulations, and that you should fulfill your content moderation obligations.
         * @type {boolean || null}
         */
        this.EnableAudit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Greeting = 'Greeting' in params ? params.Greeting : null;
        this.RoleDescription = 'RoleDescription' in params ? params.RoleDescription : null;

        if (params.Model) {
            let obj = new AppModel();
            obj.deserialize(params.Model)
            this.Model = obj;
        }

        if (params.Search) {
            this.Search = new Array();
            for (let z in params.Search) {
                let obj = new KnowledgeQaSearch();
                obj.deserialize(params.Search[z]);
                this.Search.push(obj);
            }
        }

        if (params.Output) {
            let obj = new KnowledgeQaOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

        if (params.Workflow) {
            let obj = new KnowledgeWorkflow();
            obj.deserialize(params.Workflow)
            this.Workflow = obj;
        }

        if (params.SearchRange) {
            let obj = new SearchRange();
            obj.deserialize(params.SearchRange)
            this.SearchRange = obj;
        }
        this.Pattern = 'Pattern' in params ? params.Pattern : null;

        if (params.SearchStrategy) {
            let obj = new SearchStrategy();
            obj.deserialize(params.SearchStrategy)
            this.SearchStrategy = obj;
        }

        if (params.SingleWorkflow) {
            let obj = new KnowledgeQaSingleWorkflow();
            obj.deserialize(params.SingleWorkflow)
            this.SingleWorkflow = obj;
        }

        if (params.Plugins) {
            this.Plugins = new Array();
            for (let z in params.Plugins) {
                let obj = new KnowledgeQaPlugin();
                obj.deserialize(params.Plugins[z]);
                this.Plugins.push(obj);
            }
        }

        if (params.ThoughtModel) {
            let obj = new AppModel();
            obj.deserialize(params.ThoughtModel)
            this.ThoughtModel = obj;
        }

        if (params.IntentAchievements) {
            this.IntentAchievements = new Array();
            for (let z in params.IntentAchievements) {
                let obj = new IntentAchievement();
                obj.deserialize(params.IntentAchievements[z]);
                this.IntentAchievements.push(obj);
            }
        }
        this.ImageTextRetrieval = 'ImageTextRetrieval' in params ? params.ImageTextRetrieval : null;

        if (params.AiCall) {
            let obj = new AICallConfig();
            obj.deserialize(params.AiCall)
            this.AiCall = obj;
        }
        this.EnableAudit = 'EnableAudit' in params ? params.EnableAudit : null;

    }
}

/**
 * Release rejected questions.
 * @class
 */
class RejectedQuestion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reject question ID.
         * @type {string || null}
         */
        this.RejectedBizId = null;

        /**
         * The question that has been rejected.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Whether editing is allowed.
         * @type {boolean || null}
         */
        this.IsAllowEdit = null;

        /**
         * Whether deletion is allowed.
         * @type {boolean || null}
         */
        this.IsAllowDelete = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RejectedBizId = 'RejectedBizId' in params ? params.RejectedBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.IsAllowEdit = 'IsAllowEdit' in params ? params.IsAllowEdit : null;
        this.IsAllowDelete = 'IsAllowDelete' in params ? params.IsAllowDelete : null;

    }
}

/**
 * Chat details Refer.
 * @class
 */
class MsgRecordReference extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * URL.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Type.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Source document ID.
         * @type {string || null}
         */
        this.DocId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.DocId = 'DocId' in params ? params.DocId : null;

    }
}

/**
 * 
 * @class
 */
class AICallConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {boolean || null}
         */
        this.EnableVoiceInteract = null;

        /**
         * 
         * @type {boolean || null}
         */
        this.EnableVoiceCall = null;

        /**
         * 
         * @type {boolean || null}
         */
        this.EnableDigitalHuman = null;

        /**
         * 
         * @type {VoiceConfig || null}
         */
        this.Voice = null;

        /**
         * 
         * @type {DigitalHumanConfig || null}
         */
        this.DigitalHuman = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EnableVoiceInteract = 'EnableVoiceInteract' in params ? params.EnableVoiceInteract : null;
        this.EnableVoiceCall = 'EnableVoiceCall' in params ? params.EnableVoiceCall : null;
        this.EnableDigitalHuman = 'EnableDigitalHuman' in params ? params.EnableDigitalHuman : null;

        if (params.Voice) {
            let obj = new VoiceConfig();
            obj.deserialize(params.Voice)
            this.Voice = obj;
        }

        if (params.DigitalHuman) {
            let obj = new DigitalHumanConfig();
            obj.deserialize(params.DigitalHuman)
            this.DigitalHuman = obj;
        }

    }
}

/**
 * ListRejectedQuestionPreview request structure.
 * @class
 */
class ListRejectedQuestionPreviewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Release ticket ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * Status (1: newly-added; 2: updated; 3:  deleted).
         * @type {Array.<number> || null}
         */
        this.Actions = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.Actions = 'Actions' in params ? params.Actions : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * ListReleaseConfigPreview response structure.
 * @class
 */
class ListReleaseConfigPreviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quantity.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * Configuration item list.
         * @type {Array.<ReleaseConfigs> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ReleaseConfigs();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Model information.
 * @class
 */
class ModelInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model name.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Model description.
         * @type {string || null}
         */
        this.ModelDesc = null;

        /**
         * Model name.
         * @type {string || null}
         */
        this.AliasName = null;

        /**
         * Resource status, 1: available; 2: exhausted.
         * @type {number || null}
         */
        this.ResourceStatus = null;

        /**
         * Character limit of prompt content.
         * @type {string || null}
         */
        this.PromptWordsLimit = null;

        /**
         * By controlling the diversity of content generation through core sampling, a higher Top P value will lead to more diverse content generation.
         * @type {ModelParameter || null}
         */
        this.TopP = null;

        /**
         * Temperature control randomness.
         * @type {ModelParameter || null}
         */
        this.Temperature = null;

        /**
         * Maximum quantity of tokens that can be generated.
         * @type {ModelParameter || null}
         */
        this.MaxTokens = null;

        /**
         * Model source, Hunyuan: Tencent Hunyuan; Industry: Tencent Cloud industry large model; Experience: new model experience.
         * @type {string || null}
         */
        this.Source = null;

        /**
         * Model icon.
         * @type {string || null}
         */
        this.Icon = null;

        /**
         * Whether it is free.
         * @type {boolean || null}
         */
        this.IsFree = null;

        /**
         * Maximum characters input in the model dialog box.
         * @type {number || null}
         */
        this.InputLenLimit = null;

        /**
         * Workflow support levels:
0 - Not supported by the model;
1 - Supported by the model;
2 - Poorly supported by the model.
         * @type {number || null}
         */
        this.SupportWorkflowStatus = null;

        /**
         * Model categories:
Generate: Generative model
Thought: Thinking model
         * @type {string || null}
         */
        this.ModelCategory = null;

        /**
         * Whether it is the default model.
         * @type {boolean || null}
         */
        this.IsDefault = null;

        /**
         * Maximum characters of role prompt words.
         * @type {number || null}
         */
        this.RoleLenLimit = null;

        /**
         * Whether it is an exclusive concurrency model.
         * @type {boolean || null}
         */
        this.IsExclusive = null;

        /**
         * The model supports intelligent call effects.
         * @type {number || null}
         */
        this.SupportAiCallStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.ModelDesc = 'ModelDesc' in params ? params.ModelDesc : null;
        this.AliasName = 'AliasName' in params ? params.AliasName : null;
        this.ResourceStatus = 'ResourceStatus' in params ? params.ResourceStatus : null;
        this.PromptWordsLimit = 'PromptWordsLimit' in params ? params.PromptWordsLimit : null;

        if (params.TopP) {
            let obj = new ModelParameter();
            obj.deserialize(params.TopP)
            this.TopP = obj;
        }

        if (params.Temperature) {
            let obj = new ModelParameter();
            obj.deserialize(params.Temperature)
            this.Temperature = obj;
        }

        if (params.MaxTokens) {
            let obj = new ModelParameter();
            obj.deserialize(params.MaxTokens)
            this.MaxTokens = obj;
        }
        this.Source = 'Source' in params ? params.Source : null;
        this.Icon = 'Icon' in params ? params.Icon : null;
        this.IsFree = 'IsFree' in params ? params.IsFree : null;
        this.InputLenLimit = 'InputLenLimit' in params ? params.InputLenLimit : null;
        this.SupportWorkflowStatus = 'SupportWorkflowStatus' in params ? params.SupportWorkflowStatus : null;
        this.ModelCategory = 'ModelCategory' in params ? params.ModelCategory : null;
        this.IsDefault = 'IsDefault' in params ? params.IsDefault : null;
        this.RoleLenLimit = 'RoleLenLimit' in params ? params.RoleLenLimit : null;
        this.IsExclusive = 'IsExclusive' in params ? params.IsExclusive : null;
        this.SupportAiCallStatus = 'SupportAiCallStatus' in params ? params.SupportAiCallStatus : null;

    }
}

/**
 * DeleteRejectedQuestion request structure.
 * @class
 */
class DeleteRejectedQuestionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * The unique ID of the data source for the rejected question.



         * @type {Array.<string> || null}
         */
        this.RejectedBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.RejectedBizIds = 'RejectedBizIds' in params ? params.RejectedBizIds : null;

    }
}

/**
 * Fragment highlight content.
 * @class
 */
class Highlight extends  AbstractModel {
    constructor(){
        super();

        /**
         * Highlight starting position.
         * @type {string || null}
         */
        this.StartPos = null;

        /**
         * Highlight end position.
         * @type {string || null}
         */
        this.EndPos = null;

        /**
         * Highlight subtext.
         * @type {string || null}
         */
        this.Text = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartPos = 'StartPos' in params ? params.StartPos : null;
        this.EndPos = 'EndPos' in params ? params.EndPos : null;
        this.Text = 'Text' in params ? params.Text : null;

    }
}

/**
 * Real-Time uploaded file information.
 * @class
 */
class FileInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * File name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File size.
         * @type {string || null}
         */
        this.FileSize = null;

        /**
         * URL of the file, address of COS.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * DocID returned after parsing.
         * @type {string || null}
         */
        this.DocId = null;

        /**
         * Creation time.
         * @type {string || null}
         */
        this.CreatedAt = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileSize = 'FileSize' in params ? params.FileSize : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.DocId = 'DocId' in params ? params.DocId : null;
        this.CreatedAt = 'CreatedAt' in params ? params.CreatedAt : null;

    }
}

/**
 * ExportQAList request structure.
 * @class
 */
class ExportQAListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Q&A business ID.
         * @type {Array.<string> || null}
         */
        this.QaBizIds = null;

        /**
         * Query parameter.
         * @type {QAQuery || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.QaBizIds = 'QaBizIds' in params ? params.QaBizIds : null;

        if (params.Filters) {
            let obj = new QAQuery();
            obj.deserialize(params.Filters)
            this.Filters = obj;
        }

    }
}

/**
 * GetDocPreview response structure.
 * @class
 */
class GetDocPreviewResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filename. The release end always uses this name.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * File type.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * COS path.

         * @type {string || null}
         */
        this.CosUrl = null;

        /**
         * COS temporary url.

         * @type {string || null}
         */
        this.Url = null;

        /**
         * COS bucket.

         * @type {string || null}
         */
        this.Bucket = null;

        /**
         * It is the new name in the case of document renaming. It shall be used preferentially on the evaluation end.
         * @type {string || null}
         */
        this.NewName = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.CosUrl = 'CosUrl' in params ? params.CosUrl : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;
        this.NewName = 'NewName' in params ? params.NewName : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeConcurrencyUsage response structure.
 * @class
 */
class DescribeConcurrencyUsageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The upper limit of available concurrency.
         * @type {number || null}
         */
        this.AvailableConcurrency = null;

        /**
         * Peak concurrent value.
         * @type {number || null}
         */
        this.ConcurrencyPeak = null;

        /**
         * The number of times exceeding the capacity limit of available concurrency.
         * @type {number || null}
         */
        this.ExceedUsageTime = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AvailableConcurrency = 'AvailableConcurrency' in params ? params.AvailableConcurrency : null;
        this.ConcurrencyPeak = 'ConcurrencyPeak' in params ? params.ConcurrencyPeak : null;
        this.ExceedUsageTime = 'ExceedUsageTime' in params ? params.ExceedUsageTime : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateRelease response structure.
 * @class
 */
class CreateReleaseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Release ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyApp request structure.
 * @class
 */
class ModifyAppRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Basic application configuration.
         * @type {BaseConfig || null}
         */
        this.BaseConfig = null;

        /**
         * Application configuration.
         * @type {AppConfig || null}
         */
        this.AppConfig = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.AppType = 'AppType' in params ? params.AppType : null;

        if (params.BaseConfig) {
            let obj = new BaseConfig();
            obj.deserialize(params.BaseConfig)
            this.BaseConfig = obj;
        }

        if (params.AppConfig) {
            let obj = new AppConfig();
            obj.deserialize(params.AppConfig)
            this.AppConfig = obj;
        }
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * Application usage details of knowledge library capacity.
 * @class
 */
class KnowledgeDetail extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application name.
         * @type {string || null}
         */
        this.AppName = null;

        /**
         * Number of used characters.
         * @type {string || null}
         */
        this.UsedCharSize = null;

        /**
         * Usage proportion.
         * @type {number || null}
         */
        this.Proportion = null;

        /**
         * Exceeding character count.
         * @type {string || null}
         */
        this.ExceedCharSize = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppName = 'AppName' in params ? params.AppName : null;
        this.UsedCharSize = 'UsedCharSize' in params ? params.UsedCharSize : null;
        this.Proportion = 'Proportion' in params ? params.Proportion : null;
        this.ExceedCharSize = 'ExceedCharSize' in params ? params.ExceedCharSize : null;

    }
}

/**
 * DeleteAttributeLabel response structure.
 * @class
 */
class DeleteAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RetryRelease request structure.
 * @class
 */
class RetryReleaseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Robot ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Release business id.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;

    }
}

/**
 * Information of application-associated plug-in.
 * @class
 */
class KnowledgeQaPlugin extends  AbstractModel {
    constructor(){
        super();

        /**
         * Plugin ID.
         * @type {string || null}
         */
        this.PluginId = null;

        /**
         * Plugin name.
         * @type {string || null}
         */
        this.PluginName = null;

        /**
         * Plugin icon.
         * @type {string || null}
         */
        this.PluginIcon = null;

        /**
         * Tool ID.
         * @type {string || null}
         */
        this.ToolId = null;

        /**
         * Tool name.
         * @type {string || null}
         */
        this.ToolName = null;

        /**
         * Tool description.
         * @type {string || null}
         */
        this.ToolDesc = null;

        /**
         * Tool input parameter.
         * @type {Array.<PluginToolReqParam> || null}
         */
        this.Inputs = null;

        /**
         * Whether the plugin is bound to the knowledge library.
         * @type {boolean || null}
         */
        this.IsBindingKnowledge = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PluginId = 'PluginId' in params ? params.PluginId : null;
        this.PluginName = 'PluginName' in params ? params.PluginName : null;
        this.PluginIcon = 'PluginIcon' in params ? params.PluginIcon : null;
        this.ToolId = 'ToolId' in params ? params.ToolId : null;
        this.ToolName = 'ToolName' in params ? params.ToolName : null;
        this.ToolDesc = 'ToolDesc' in params ? params.ToolDesc : null;

        if (params.Inputs) {
            this.Inputs = new Array();
            for (let z in params.Inputs) {
                let obj = new PluginToolReqParam();
                obj.deserialize(params.Inputs[z]);
                this.Inputs.push(obj);
            }
        }
        this.IsBindingKnowledge = 'IsBindingKnowledge' in params ? params.IsBindingKnowledge : null;

    }
}

/**
 * 
 * @class
 */
class IntentAchievement extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 
         * @type {string || null}
         */
        this.Desc = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;

    }
}

/**
 * DeleteQACate request structure.
 * @class
 */
class DeleteQACateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * GenerateQA request structure.
 * @class
 */
class GenerateQARequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {Array.<string> || null}
         */
        this.DocBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizIds = 'DocBizIds' in params ? params.DocBizIds : null;

    }
}

/**
 * GetWsToken request structure.
 * @class
 */
class GetWsTokenRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Access type, 5 - API visitor .
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Application AppKey</br>
How to Obtain It:</br>
1. After the application is released, obtain it at [Release Management] - [Call Information] - [API Management] on the application page.</br>
2. See the second item in https://cloud.tencent.com/document/product/1759/109469.
         * @type {string || null}
         */
        this.BotAppKey = null;

        /**
         * Visitor ID (external input, recommended to be unique, identifies the user currently accessing the session). Length Limit: string(64).
         * @type {string || null}
         */
        this.VisitorBizId = null;

        /**
         * Knowledge label, used for search filter in the knowledge base. This field is about to be deactivated. Please use the custom_variables field in the dialogue endpoint API to replace this field.
         * @type {Array.<GetWsTokenReq_Label> || null}
         */
        this.VisitorLabels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.BotAppKey = 'BotAppKey' in params ? params.BotAppKey : null;
        this.VisitorBizId = 'VisitorBizId' in params ? params.VisitorBizId : null;

        if (params.VisitorLabels) {
            this.VisitorLabels = new Array();
            for (let z in params.VisitorLabels) {
                let obj = new GetWsTokenReq_Label();
                obj.deserialize(params.VisitorLabels[z]);
                this.VisitorLabels.push(obj);
            }
        }

    }
}

/**
 * Obtain Q&A category group.
 * @class
 */
class QACate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Category name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Quantity of Q&As under the category.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * Whether it is possible to add.
         * @type {boolean || null}
         */
        this.CanAdd = null;

        /**
         * Whether it can be edited.
         * @type {boolean || null}
         */
        this.CanEdit = null;

        /**
         * Whether it can be deleted.
         * @type {boolean || null}
         */
        this.CanDelete = null;

        /**
         * Subcategory.
         * @type {Array.<QACate> || null}
         */
        this.Children = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Total = 'Total' in params ? params.Total : null;
        this.CanAdd = 'CanAdd' in params ? params.CanAdd : null;
        this.CanEdit = 'CanEdit' in params ? params.CanEdit : null;
        this.CanDelete = 'CanDelete' in params ? params.CanDelete : null;

        if (params.Children) {
            this.Children = new Array();
            for (let z in params.Children) {
                let obj = new QACate();
                obj.deserialize(params.Children[z]);
                this.Children.push(obj);
            }
        }

    }
}

/**
 * ModifyAttributeLabel response structure.
 * @class
 */
class ModifyAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyDoc request structure.
 * @class
 */
class ModifyDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Whether to reference a link.
         * @type {boolean || null}
         */
        this.IsRefer = null;

        /**
         * Applicable scope of labels: 1: all; 2: by condition.
         * @type {number || null}
         */
        this.AttrRange = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Associated labels.
         * @type {Array.<AttrLabelRefer> || null}
         */
        this.AttrLabels = null;

        /**
         * Web page (or custom link) address.
         * @type {string || null}
         */
        this.WebUrl = null;

        /**
         * External reference link type: 0: system link 1: custom link.
When the value is 1, the weburl field cannot be empty; otherwise, it will not take effect.
         * @type {number || null}
         */
        this.ReferUrlType = null;

        /**
         * Effective start time, unix timestamp.
         * @type {string || null}
         */
        this.ExpireStart = null;

        /**
         * Effective end time, unix timestamp. 0 indicates permanent validity.
         * @type {string || null}
         */
        this.ExpireEnd = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.IsRefer = 'IsRefer' in params ? params.IsRefer : null;
        this.AttrRange = 'AttrRange' in params ? params.AttrRange : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

        if (params.AttrLabels) {
            this.AttrLabels = new Array();
            for (let z in params.AttrLabels) {
                let obj = new AttrLabelRefer();
                obj.deserialize(params.AttrLabels[z]);
                this.AttrLabels.push(obj);
            }
        }
        this.WebUrl = 'WebUrl' in params ? params.WebUrl : null;
        this.ReferUrlType = 'ReferUrlType' in params ? params.ReferUrlType : null;
        this.ExpireStart = 'ExpireStart' in params ? params.ExpireStart : null;
        this.ExpireEnd = 'ExpireEnd' in params ? params.ExpireEnd : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * DescribeTokenUsage response structure.
 * @class
 */
class DescribeTokenUsageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total token consumption.
         * @type {number || null}
         */
        this.TotalTokenUsage = null;

        /**
         * Input token consumption.
         * @type {number || null}
         */
        this.InputTokenUsage = null;

        /**
         * Output token consumption.
         * @type {number || null}
         */
        this.OutputTokenUsage = null;

        /**
         * Number of API calls.
         * @type {number || null}
         */
        this.ApiCallStats = null;

        /**
         * Number of search service calls.
         * @type {number || null}
         */
        this.SearchUsage = null;

        /**
         * Number of pages consumed by document parsing.
         * @type {number || null}
         */
        this.PageUsage = null;

        /**
         * Token consumption by splitting.
         * @type {number || null}
         */
        this.SplitTokenUsage = null;

        /**
         * Number of Rag retrievals.
         * @type {number || null}
         */
        this.RagSearchUsage = null;

        /**
         * Number of online searches.
         * @type {number || null}
         */
        this.InternetSearchUsage = null;

        /**
         * 
         * @type {number || null}
         */
        this.DosageTypeLimit = null;

        /**
         * 
         * @type {number || null}
         */
        this.DosageTypeCurr = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalTokenUsage = 'TotalTokenUsage' in params ? params.TotalTokenUsage : null;
        this.InputTokenUsage = 'InputTokenUsage' in params ? params.InputTokenUsage : null;
        this.OutputTokenUsage = 'OutputTokenUsage' in params ? params.OutputTokenUsage : null;
        this.ApiCallStats = 'ApiCallStats' in params ? params.ApiCallStats : null;
        this.SearchUsage = 'SearchUsage' in params ? params.SearchUsage : null;
        this.PageUsage = 'PageUsage' in params ? params.PageUsage : null;
        this.SplitTokenUsage = 'SplitTokenUsage' in params ? params.SplitTokenUsage : null;
        this.RagSearchUsage = 'RagSearchUsage' in params ? params.RagSearchUsage : null;
        this.InternetSearchUsage = 'InternetSearchUsage' in params ? params.InternetSearchUsage : null;
        this.DosageTypeLimit = 'DosageTypeLimit' in params ? params.DosageTypeLimit : null;
        this.DosageTypeCurr = 'DosageTypeCurr' in params ? params.DosageTypeCurr : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteApp response structure.
 * @class
 */
class DeleteAppResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Retrieval range configuration.
 * @class
 */
class SearchRange extends  AbstractModel {
    constructor(){
        super();

        /**
         * Search criteria and/or.
         * @type {string || null}
         */
        this.Condition = null;

        /**
         * Custom variable and label relational data.
         * @type {Array.<ApiVarAttrInfo> || null}
         */
        this.ApiVarAttrInfos = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Condition = 'Condition' in params ? params.Condition : null;

        if (params.ApiVarAttrInfos) {
            this.ApiVarAttrInfos = new Array();
            for (let z in params.ApiVarAttrInfos) {
                let obj = new ApiVarAttrInfo();
                obj.deserialize(params.ApiVarAttrInfos[z]);
                this.ApiVarAttrInfos.push(obj);
            }
        }

    }
}

/**
 * ListAttributeLabel request structure.
 * @class
 */
class ListAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Quantity per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.Query = 'Query' in params ? params.Query : null;

    }
}

/**
 * DeleteDocCate request structure.
 * @class
 */
class DeleteDocCateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Category business ID.
         * @type {string || null}
         */
        this.CateBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;

    }
}

/**
 * Reference source in agent.
 * @class
 */
class AgentReference extends  AbstractModel {
    constructor(){
        super();

        /**
         * Source document ID.
         * @type {string || null}
         */
        this.DocId = null;

        /**
         * ID.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * URL.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Document business ID.
         * @type {string || null}
         */
        this.DocBizId = null;

        /**
         * Document name.
         * @type {string || null}
         */
        this.DocName = null;

        /**
         * Q&A business ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Index of search engine.
         * @type {number || null}
         */
        this.Index = null;

        /**
         * Title.
         * @type {string || null}
         */
        this.Title = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DocId = 'DocId' in params ? params.DocId : null;
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;
        this.DocName = 'DocName' in params ? params.DocName : null;
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.Index = 'Index' in params ? params.Index : null;
        this.Title = 'Title' in params ? params.Title : null;

    }
}

/**
 * DeleteDoc response structure.
 * @class
 */
class DeleteDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Application basic configuration.
 * @class
 */
class BaseConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Application avatar url, required as an input parameter in "CreateApp" and "ModifyApp". Description of input parameter: 1. The image of input URL must be jpeg or png, with a size no more than 500kb, and the URL must allow head requests. 2. If the user does not have object storage, use the "Obtain temporary file upload key" (DescribeStorageCredential) API to obtain the COS temporary key and upload path. Upload the avatar to COS by yourself and get the access link.
         * @type {string || null}
         */
        this.Avatar = null;

        /**
         * Application description.
         * @type {string || null}
         */
        this.Desc = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Avatar = 'Avatar' in params ? params.Avatar : null;
        this.Desc = 'Desc' in params ? params.Desc : null;

    }
}

/**
 * DescribeSegments response structure.
 * @class
 */
class DescribeSegmentsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Fragment list.
         * @type {Array.<DocSegment> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new DocSegment();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Similar question information.
 * @class
 */
class SimilarQuestion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Similar question ID.
         * @type {string || null}
         */
        this.SimBizId = null;

        /**
         * Similar question content.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Similar question review status, 1: audit failure.
         * @type {number || null}
         */
        this.AuditStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SimBizId = 'SimBizId' in params ? params.SimBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.AuditStatus = 'AuditStatus' in params ? params.AuditStatus : null;

    }
}

/**
 * Label extraction configuration.
 * @class
 */
class ClassifyConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model configuration.
         * @type {AppModel || null}
         */
        this.Model = null;

        /**
         * Label list.
         * @type {Array.<ClassifyLabel> || null}
         */
        this.Labels = null;

        /**
         * Welcome words, within 200 characters.
         * @type {string || null}
         */
        this.Greeting = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Model) {
            let obj = new AppModel();
            obj.deserialize(params.Model)
            this.Model = obj;
        }

        if (params.Labels) {
            this.Labels = new Array();
            for (let z in params.Labels) {
                let obj = new ClassifyLabel();
                obj.deserialize(params.Labels[z]);
                this.Labels.push(obj);
            }
        }
        this.Greeting = 'Greeting' in params ? params.Greeting : null;

    }
}

/**
 * DescribeConcurrencyUsage request structure.
 * @class
 */
class DescribeConcurrencyUsageRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model identification.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;

    }
}

/**
 * GroupDoc response structure.
 * @class
 */
class GroupDocResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * UploadAttributeLabel request structure.
 * @class
 */
class UploadAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Filename.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Cos path.
         * @type {string || null}
         */
        this.CosUrl = null;

        /**
         * Verify the consistency of files uploaded to the cloud and local files by validating the crc64 encoding in the x-cos-hash-crc64ecma header.
         * @type {string || null}
         */
        this.CosHash = null;

        /**
         * File size.
         * @type {string || null}
         */
        this.Size = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.CosUrl = 'CosUrl' in params ? params.CosUrl : null;
        this.CosHash = 'CosHash' in params ? params.CosHash : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * ListUsageCallDetail response structure.
 * @class
 */
class ListUsageCallDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total count of lists.
         * @type {number || null}
         */
        this.Total = null;

        /**
         * List.
         * @type {Array.<CallDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new CallDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExportAttributeLabel request structure.
 * @class
 */
class ExportAttributeLabelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Attribute ID.
         * @type {Array.<string> || null}
         */
        this.AttributeBizIds = null;

        /**
         * Export according to the filtered data.
         * @type {AttributeFilters || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.AttributeBizIds = 'AttributeBizIds' in params ? params.AttributeBizIds : null;

        if (params.Filters) {
            let obj = new AttributeFilters();
            obj.deserialize(params.Filters)
            this.Filters = obj;
        }

    }
}

/**
 * DescribeTokenUsage request structure.
 * @class
 */
class DescribeTokenUsageRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Root account of Tencent Cloud.
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Log in to user's root account (required in the integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Sub-business types of Tencent Cloud Agent Development Platform/ADP: FileParse (document parsing), embedding, Rewrite (multi-round rewriting), Concurrency, KnowledgeSummary (knowledge summary), KnowledgeQA (knowledge Q&A), KnowledgeCapacity (knowledge base capacity), SearchEngine (search engine).
         * @type {string || null}
         */
        this.SubBizType = null;

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds (default value: 0).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds (default value: 0, must be greater than the start timestamp).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

        /**
         * Filter sub-scenario (used in document parsing scenario).
         * @type {Array.<string> || null}
         */
        this.SubScenes = null;

        /**
         * 
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * 
         * @type {string || null}
         */
        this.SpaceId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.SubBizType = 'SubBizType' in params ? params.SubBizType : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;
        this.SubScenes = 'SubScenes' in params ? params.SubScenes : null;
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.SpaceId = 'SpaceId' in params ? params.SpaceId : null;

    }
}

/**
 * GetAppKnowledgeCount response structure.
 * @class
 */
class GetAppKnowledgeCountResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateAttributeLabel response structure.
 * @class
 */
class CreateAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Label ID.
         * @type {string || null}
         */
        this.AttrBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AttrBizId = 'AttrBizId' in params ? params.AttrBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * 
 * @class
 */
class DuplicateFileHandle extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {number || null}
         */
        this.CheckType = null;

        /**
         * 
         * @type {number || null}
         */
        this.HandleType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CheckType = 'CheckType' in params ? params.CheckType : null;
        this.HandleType = 'HandleType' in params ? params.HandleType : null;

    }
}

/**
 * ListAppKnowledgeDetail request structure.
 * @class
 */
class ListAppKnowledgeDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Page size.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Application ID list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;

    }
}

/**
 * CreateQA response structure.
 * @class
 */
class CreateQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListQACate request structure.
 * @class
 */
class ListQACateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * ListReleaseQAPreview request structure.
 * @class
 */
class ListReleaseQAPreviewRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Page number.
         * @type {number || null}
         */
        this.PageNumber = null;

        /**
         * Number of items per page.
         * @type {number || null}
         */
        this.PageSize = null;

        /**
         * Query content.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Release ticket ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * Start time.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Status (1: newly-added; 2: modified; 3: deleted).
         * @type {Array.<number> || null}
         */
        this.Actions = null;

        /**
         * Release status (4: release successful; 5: release failed).
         * @type {Array.<number> || null}
         */
        this.ReleaseStatus = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.PageNumber = 'PageNumber' in params ? params.PageNumber : null;
        this.PageSize = 'PageSize' in params ? params.PageSize : null;
        this.Query = 'Query' in params ? params.Query : null;
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.Actions = 'Actions' in params ? params.Actions : null;
        this.ReleaseStatus = 'ReleaseStatus' in params ? params.ReleaseStatus : null;

    }
}

/**
 * DescribeReleaseInfo response structure.
 * @class
 */
class DescribeReleaseInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The last release time.
         * @type {string || null}
         */
        this.LastTime = null;

        /**
         * Release status: 1: pending release; 2: releasing; 3: release successful; 4: release failed; 5: under review; 6: review successful; 7: review failed; 8: release successful, callback processing; 9: release paused; 10: appeal under review; 11: appeal approved; 12: appeal rejected.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Whether it has been edited. When it is true, it means it can be released.
         * @type {boolean || null}
         */
        this.IsUpdated = null;

        /**
         * Reason for failure.

         * @type {string || null}
         */
        this.Msg = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LastTime = 'LastTime' in params ? params.LastTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsUpdated = 'IsUpdated' in params ? params.IsUpdated : null;
        this.Msg = 'Msg' in params ? params.Msg : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeApp response structure.
 * @class
 */
class DescribeAppResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Application type description.
         * @type {string || null}
         */
        this.AppTypeDesc = null;

        /**
         * Application type description.
         * @type {BaseConfig || null}
         */
        this.BaseConfig = null;

        /**
         * Application configuration.
         * @type {AppConfig || null}
         */
        this.AppConfig = null;

        /**
         * Whether the avatar is under appeal.
         * @type {boolean || null}
         */
        this.AvatarInAppeal = null;

        /**
         * Whether the role description is under appeal.
         * @type {boolean || null}
         */
        this.RoleInAppeal = null;

        /**
         * Whether the name is under appeal.
         * @type {boolean || null}
         */
        this.NameInAppeal = null;

        /**
         * Whether the welcome words are under appeal.
         * @type {boolean || null}
         */
        this.GreetingInAppeal = null;

        /**
         * Whether the response message for unknown questions is under appeal.
         * @type {boolean || null}
         */
        this.BareAnswerInAppeal = null;

        /**
         * App key of the application.
         * @type {string || null}
         */
        this.AppKey = null;

        /**
         * Application status. 1: offline; 2: running; 3: disabled.
         * @type {number || null}
         */
        this.AppStatus = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.AppStatusDesc = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.AppTypeDesc = 'AppTypeDesc' in params ? params.AppTypeDesc : null;

        if (params.BaseConfig) {
            let obj = new BaseConfig();
            obj.deserialize(params.BaseConfig)
            this.BaseConfig = obj;
        }

        if (params.AppConfig) {
            let obj = new AppConfig();
            obj.deserialize(params.AppConfig)
            this.AppConfig = obj;
        }
        this.AvatarInAppeal = 'AvatarInAppeal' in params ? params.AvatarInAppeal : null;
        this.RoleInAppeal = 'RoleInAppeal' in params ? params.RoleInAppeal : null;
        this.NameInAppeal = 'NameInAppeal' in params ? params.NameInAppeal : null;
        this.GreetingInAppeal = 'GreetingInAppeal' in params ? params.GreetingInAppeal : null;
        this.BareAnswerInAppeal = 'BareAnswerInAppeal' in params ? params.BareAnswerInAppeal : null;
        this.AppKey = 'AppKey' in params ? params.AppKey : null;
        this.AppStatus = 'AppStatus' in params ? params.AppStatus : null;
        this.AppStatusDesc = 'AppStatusDesc' in params ? params.AppStatusDesc : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteApp request structure.
 * @class
 */
class DeleteAppRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.AppBizId = null;

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppBizId = 'AppBizId' in params ? params.AppBizId : null;
        this.AppType = 'AppType' in params ? params.AppType : null;

    }
}

/**
 * ModifyRejectedQuestion response structure.
 * @class
 */
class ModifyRejectedQuestionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Workflow debugging information.
 * @class
 */
class WorkFlowSummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * Workflow ID.
         * @type {string || null}
         */
        this.WorkflowId = null;

        /**
         * Workflow name.
         * @type {string || null}
         */
        this.WorkflowName = null;

        /**
         * Workflow running ID.
         * @type {string || null}
         */
        this.WorkflowRunId = null;

        /**
         * Node information.
         * @type {Array.<WorkflowRunNodeInfo> || null}
         */
        this.RunNodes = null;

        /**
         * Tab.
         * @type {Array.<string> || null}
         */
        this.OptionCards = null;

        /**
         * Output results of multiple bubbles.
         * @type {Array.<string> || null}
         */
        this.Outputs = null;

        /**
         * Workflow release time, Unix timestamp.
         * @type {string || null}
         */
        this.WorkflowReleaseTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.WorkflowId = 'WorkflowId' in params ? params.WorkflowId : null;
        this.WorkflowName = 'WorkflowName' in params ? params.WorkflowName : null;
        this.WorkflowRunId = 'WorkflowRunId' in params ? params.WorkflowRunId : null;

        if (params.RunNodes) {
            this.RunNodes = new Array();
            for (let z in params.RunNodes) {
                let obj = new WorkflowRunNodeInfo();
                obj.deserialize(params.RunNodes[z]);
                this.RunNodes.push(obj);
            }
        }
        this.OptionCards = 'OptionCards' in params ? params.OptionCards : null;
        this.Outputs = 'Outputs' in params ? params.Outputs : null;
        this.WorkflowReleaseTime = 'WorkflowReleaseTime' in params ? params.WorkflowReleaseTime : null;

    }
}

/**
 * Task parameter.
 * @class
 */
class TaskParams extends  AbstractModel {
    constructor(){
        super();

        /**
         * Download address. Download through the COS bucket temporary key.
         * @type {string || null}
         */
        this.CosPath = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CosPath = 'CosPath' in params ? params.CosPath : null;

    }
}

/**
 * Application type details.
 * @class
 */
class ListAppCategoryRspOption extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type name.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * Type value.
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Type log.
         * @type {string || null}
         */
        this.Logo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Text = 'Text' in params ? params.Text : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.Logo = 'Logo' in params ? params.Logo : null;

    }
}

/**
 * DescribeStorageCredential request structure.
 * @class
 */
class DescribeStorageCredentialRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID. The parameter still needs to be filled in. Different combinations of parameters will result in different permissions. For details, see https://cloud.tencent.com/document/product/1759/116238.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * File type, normal file name type suffixes, such as xlsx, pdf, docx, png, etc.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * This parameter is used to select a scenario when uploading a file or an image. When uploading an image in a chat, "Ispublic" is "true." When uploading a file (including files in the document library, images, etc. and files in a chat), "Ispublic" is "false."

         * @type {boolean || null}
         */
        this.IsPublic = null;

        /**
         * Storage type: offline - offline file; realtime - real-time file. If empty, it defaults to offline.
         * @type {string || null}
         */
        this.TypeKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.IsPublic = 'IsPublic' in params ? params.IsPublic : null;
        this.TypeKey = 'TypeKey' in params ? params.TypeKey : null;

    }
}

/**
 * Q&A list.
 * @class
 */
class QAList extends  AbstractModel {
    constructor(){
        super();

        /**
         * Q&A ID.
         * @type {string || null}
         */
        this.QaBizId = null;

        /**
         * Whether to accept.
         * @type {boolean || null}
         */
        this.IsAccepted = null;

        /**
         * Category ID.
         * @type {string || null}
         */
        this.CateBizId = null;

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Answer.
         * @type {string || null}
         */
        this.Answer = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.QaBizId = 'QaBizId' in params ? params.QaBizId : null;
        this.IsAccepted = 'IsAccepted' in params ? params.IsAccepted : null;
        this.CateBizId = 'CateBizId' in params ? params.CateBizId : null;
        this.Question = 'Question' in params ? params.Question : null;
        this.Answer = 'Answer' in params ? params.Answer : null;

    }
}

/**
 * DescribeCorp response structure.
 * @class
 */
class DescribeCorpResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Corporate ID.

         * @type {string || null}
         */
        this.CorpBizId = null;

        /**
         * Application quota.
         * @type {number || null}
         */
        this.RobotQuota = null;

        /**
         * Full name of the corporate.

         * @type {string || null}
         */
        this.FullName = null;

        /**
         * Whether to try out.
         * @type {boolean || null}
         */
        this.IsTrial = null;

        /**
         * Whether the trial has expired.
         * @type {boolean || null}
         */
        this.IsTrialExpired = null;

        /**
         * Quantity of available applications.
         * @type {number || null}
         */
        this.AvailableAppQuota = null;

        /**
         * Whether custom model configuration is supported.
         * @type {boolean || null}
         */
        this.IsSupportCustomModel = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CorpBizId = 'CorpBizId' in params ? params.CorpBizId : null;
        this.RobotQuota = 'RobotQuota' in params ? params.RobotQuota : null;
        this.FullName = 'FullName' in params ? params.FullName : null;
        this.IsTrial = 'IsTrial' in params ? params.IsTrial : null;
        this.IsTrialExpired = 'IsTrialExpired' in params ? params.IsTrialExpired : null;
        this.AvailableAppQuota = 'AvailableAppQuota' in params ? params.AvailableAppQuota : null;
        this.IsSupportCustomModel = 'IsSupportCustomModel' in params ? params.IsSupportCustomModel : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyDocCate response structure.
 * @class
 */
class ModifyDocCateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListRelease response structure.
 * @class
 */
class ListReleaseResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of release lists.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * Release list.
         * @type {Array.<ListReleaseItem> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ListReleaseItem();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListModel response structure.
 * @class
 */
class ListModelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Model list.
         * @type {Array.<ModelInfo> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new ModelInfo();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ListAttributeLabel response structure.
 * @class
 */
class ListAttributeLabelResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number.
         * @type {string || null}
         */
        this.Total = null;

        /**
         * List.
         * @type {Array.<AttrLabelDetail> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Total = 'Total' in params ? params.Total : null;

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new AttrLabelDetail();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of release list.
 * @class
 */
class ListReleaseItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Version ID.
         * @type {string || null}
         */
        this.ReleaseBizId = null;

        /**
         * Releaser.
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * Release description.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Release status.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * Release status description.
         * @type {string || null}
         */
        this.StatusDesc = null;

        /**
         * Reason for failure.
         * @type {string || null}
         */
        this.Reason = null;

        /**
         * Number of successful releases.
         * @type {number || null}
         */
        this.SuccessCount = null;

        /**
         * Number of failed releases.
         * @type {number || null}
         */
        this.FailCount = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReleaseBizId = 'ReleaseBizId' in params ? params.ReleaseBizId : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StatusDesc = 'StatusDesc' in params ? params.StatusDesc : null;
        this.Reason = 'Reason' in params ? params.Reason : null;
        this.SuccessCount = 'SuccessCount' in params ? params.SuccessCount : null;
        this.FailCount = 'FailCount' in params ? params.FailCount : null;

    }
}

/**
 * ModifyQA response structure.
 * @class
 */
class ModifyQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteQA response structure.
 * @class
 */
class DeleteQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeCallStatsGraph response structure.
 * @class
 */
class DescribeCallStatsGraphResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Statistical information of API calls.
         * @type {Array.<Stat> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Stat();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * GetMsgRecord request structure.
 * @class
 */
class GetMsgRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Quantity.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Session ID.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Application AppKey. When Type=5 [API Visitor], this field is required. </br> How to obtain it: </br> 1. After the application is released, obtain it at [Application Page]-[Release Management]-[Call Information]-[API Management]. </br> 2. Refer to item 2 in https://cloud.tencent.com/document/product/1759/109469.
         * @type {string || null}
         */
        this.BotAppKey = null;

        /**
         * Scenario, experience: 1; formal: 2.
         * @type {number || null}
         */
        this.Scene = null;

        /**
         * Last record ID. Retrieve messages in reverse order. You can only select either MidRecordId or LastRecordId.
         * @type {string || null}
         */
        this.LastRecordId = null;

        /**
         * If this value is input, it means pulling a total of count message records before and after the record ID. You can only select either MidRecordId or LastRecordId.
         * @type {string || null}
         */
        this.MidRecordId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.BotAppKey = 'BotAppKey' in params ? params.BotAppKey : null;
        this.Scene = 'Scene' in params ? params.Scene : null;
        this.LastRecordId = 'LastRecordId' in params ? params.LastRecordId : null;
        this.MidRecordId = 'MidRecordId' in params ? params.MidRecordId : null;

    }
}

/**
 * DescribeStorageCredential response structure.
 * @class
 */
class DescribeStorageCredentialResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Key information.
         * @type {Credentials || null}
         */
        this.Credentials = null;

        /**
         * Expiration time.
         * @type {number || null}
         */
        this.ExpiredTime = null;

        /**
         * Start time.
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * Cloud object storage bucket.
         * @type {string || null}
         */
        this.Bucket = null;

        /**
         * COS availability zone.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Cloud file storage directory.
         * @type {string || null}
         */
        this.FilePath = null;

        /**
         * Storage type.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Primary account.
         * @type {string || null}
         */
        this.CorpUin = null;

        /**
         * Image storage directory.
         * @type {string || null}
         */
        this.ImagePath = null;

        /**
         * Upload storage path to a specific file.
         * @type {string || null}
         */
        this.UploadPath = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Credentials) {
            let obj = new Credentials();
            obj.deserialize(params.Credentials)
            this.Credentials = obj;
        }
        this.ExpiredTime = 'ExpiredTime' in params ? params.ExpiredTime : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.FilePath = 'FilePath' in params ? params.FilePath : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.CorpUin = 'CorpUin' in params ? params.CorpUin : null;
        this.ImagePath = 'ImagePath' in params ? params.ImagePath : null;
        this.UploadPath = 'UploadPath' in params ? params.UploadPath : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CheckAttributeLabelExist response structure.
 * @class
 */
class CheckAttributeLabelExistResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether it exists.
         * @type {boolean || null}
         */
        this.IsExist = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsExist = 'IsExist' in params ? params.IsExist : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * String KV information.
 * @class
 */
class StrValue extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Value.
         * @type {string || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * GetTaskStatus request structure.
 * @class
 */
class GetTaskStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task type.
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;

    }
}

/**
 * CheckAttributeLabelRefer response structure.
 * @class
 */
class CheckAttributeLabelReferResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to reference.
         * @type {boolean || null}
         */
        this.IsRefer = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsRefer = 'IsRefer' in params ? params.IsRefer : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RateMsgRecord response structure.
 * @class
 */
class RateMsgRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Plugin parameter request structure.
 * @class
 */
class PluginToolReqParam extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameter name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Parameter description.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Parameter type, 0: string; 1: int; 2: float; 3: bool; 4: object; 5: array_string; 6: array_int; 7: array_float; 8: array_bool; 9: array_object, 99: null, 100: upspecified.
         * @type {number || null}
         */
        this.Type = null;

        /**
         * Whether the parameter is required.
         * @type {boolean || null}
         */
        this.IsRequired = null;

        /**
         * Parameter default value.
         * @type {string || null}
         */
        this.DefaultValue = null;

        /**
         * Sub-parameter. "ParamType" is useful when it is "OBJECT " or "ARRAY<>" type.
         * @type {Array.<PluginToolReqParam> || null}
         */
        this.SubParams = null;

        /**
         * Whether the plugin parameter configuration is hidden and invisible. true - Hidden and invisible; false - Visible.
         * @type {boolean || null}
         */
        this.GlobalHidden = null;

        /**
         * OneOf type parameter.
         * @type {Array.<PluginToolReqParam> || null}
         */
        this.OneOf = null;

        /**
         * AnyOf type parameter.
         * @type {Array.<PluginToolReqParam> || null}
         */
        this.AnyOf = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.IsRequired = 'IsRequired' in params ? params.IsRequired : null;
        this.DefaultValue = 'DefaultValue' in params ? params.DefaultValue : null;

        if (params.SubParams) {
            this.SubParams = new Array();
            for (let z in params.SubParams) {
                let obj = new PluginToolReqParam();
                obj.deserialize(params.SubParams[z]);
                this.SubParams.push(obj);
            }
        }
        this.GlobalHidden = 'GlobalHidden' in params ? params.GlobalHidden : null;

        if (params.OneOf) {
            this.OneOf = new Array();
            for (let z in params.OneOf) {
                let obj = new PluginToolReqParam();
                obj.deserialize(params.OneOf[z]);
                this.OneOf.push(obj);
            }
        }

        if (params.AnyOf) {
            this.AnyOf = new Array();
            for (let z in params.AnyOf) {
                let obj = new PluginToolReqParam();
                obj.deserialize(params.AnyOf[z]);
                this.AnyOf.push(obj);
            }
        }

    }
}

/**
 * Release rejected questions.
 * @class
 */
class ReleaseRejectedQuestion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Question.
         * @type {string || null}
         */
        this.Question = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Action = null;

        /**
         * Status description.
         * @type {string || null}
         */
        this.ActionDesc = null;

        /**
         * Reason for failure.
         * @type {string || null}
         */
        this.Message = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Question = 'Question' in params ? params.Question : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Action = 'Action' in params ? params.Action : null;
        this.ActionDesc = 'ActionDesc' in params ? params.ActionDesc : null;
        this.Message = 'Message' in params ? params.Message : null;

    }
}

/**
 * CreateQACate request structure.
 * @class
 */
class CreateQACateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Parent business id. pass the string "0" when creating a top-level category.
         * @type {string || null}
         */
        this.ParentBizId = null;

        /**
         * Category name.

         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ParentBizId = 'ParentBizId' in params ? params.ParentBizId : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeRobotBizIDByAppKey request structure.
 * @class
 */
class DescribeRobotBizIDByAppKeyRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application appkey.
         * @type {string || null}
         */
        this.AppKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppKey = 'AppKey' in params ? params.AppKey : null;

    }
}

/**
 * ExportUnsatisfiedReply response structure.
 * @class
 */
class ExportUnsatisfiedReplyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateReconstructDocumentFlow response structure.
 * @class
 */
class CreateReconstructDocumentFlowResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique task ID. The processing result corresponding to TaskId can be queried through the API [GetReconstructDocumentResult](https://cloud.tencent.com/document/product/1759/107505) within 30 days.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Multiple rounds of historical information.
 * @class
 */
class HistorySummary extends  AbstractModel {
    constructor(){
        super();

        /**
         * Assistant.
         * @type {string || null}
         */
        this.Assistant = null;

        /**
         * User.
         * @type {string || null}
         */
        this.User = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Assistant = 'Assistant' in params ? params.Assistant : null;
        this.User = 'User' in params ? params.User : null;

    }
}

/**
 * VerifyQA response structure.
 * @class
 */
class VerifyQAResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Release configuration items.
 * @class
 */
class ReleaseConfigs extends  AbstractModel {
    constructor(){
        super();

        /**
         * Configuration item description.
         * @type {string || null}
         */
        this.ConfigItem = null;

        /**
         * Update time.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Status.
         * @type {number || null}
         */
        this.Action = null;

        /**
         * Content after modification.
         * @type {string || null}
         */
        this.Value = null;

        /**
         * Content before modification.
         * @type {string || null}
         */
        this.LastValue = null;

        /**
         * Modified content (display "content" with priority. If "content" is empty, take "value").
         * @type {string || null}
         */
        this.Content = null;

        /**
         * Reason for failure.
         * @type {string || null}
         */
        this.Message = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ConfigItem = 'ConfigItem' in params ? params.ConfigItem : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Action = 'Action' in params ? params.Action : null;
        this.Value = 'Value' in params ? params.Value : null;
        this.LastValue = 'LastValue' in params ? params.LastValue : null;
        this.Content = 'Content' in params ? params.Content : null;
        this.Message = 'Message' in params ? params.Message : null;

    }
}

/**
 * DescribeSegments request structure.
 * @class
 */
class DescribeSegmentsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document fragment ID.
         * @type {Array.<string> || null}
         */
        this.SegBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.SegBizId = 'SegBizId' in params ? params.SegBizId : null;

    }
}

/**
 * DescribeSearchStatsGraph request structure.
 * @class
 */
class DescribeSearchStatsGraphRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Login to user's root account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

        /**
         * Uin list.
         * @type {Array.<string> || null}
         */
        this.UinAccount = null;

        /**
         * Sub-business type.
         * @type {string || null}
         */
        this.SubBizType = null;

        /**
         * Model identifier.
         * @type {string || null}
         */
        this.ModelName = null;

        /**
         * Start timestamp, in seconds.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End timestamp, in seconds.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * Application id list.
         * @type {Array.<string> || null}
         */
        this.AppBizIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;
        this.UinAccount = 'UinAccount' in params ? params.UinAccount : null;
        this.SubBizType = 'SubBizType' in params ? params.SubBizType : null;
        this.ModelName = 'ModelName' in params ? params.ModelName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.AppBizIds = 'AppBizIds' in params ? params.AppBizIds : null;

    }
}

/**
 * DescribeSearchStatsGraph response structure.
 * @class
 */
class DescribeSearchStatsGraphResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The statistical result.
         * @type {Array.<Stat> || null}
         */
        this.List = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.List) {
            this.List = new Array();
            for (let z in params.List) {
                let obj = new Stat();
                obj.deserialize(params.List[z]);
                this.List.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Retrieve and filter dissatisfied responses.
 * @class
 */
class Filters extends  AbstractModel {
    constructor(){
        super();

        /**
         * Retrieve user question or answer.
         * @type {string || null}
         */
        this.Query = null;

        /**
         * Incorrect retrieval type.

         * @type {Array.<string> || null}
         */
        this.Reasons = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Query = 'Query' in params ? params.Query : null;
        this.Reasons = 'Reasons' in params ? params.Reasons : null;

    }
}

/**
 * DescribeRefer request structure.
 * @class
 */
class DescribeReferRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Quota ID
         * @type {Array.<string> || null}
         */
        this.ReferBizIds = null;

        /**
         * Log in to the user's root account (required in the integrator mode).
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login user sub-account (required in integrator mode).
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.ReferBizIds = 'ReferBizIds' in params ? params.ReferBizIds : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * IgnoreUnsatisfiedReply response structure.
 * @class
 */
class IgnoreUnsatisfiedReplyResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * StopDocParse request structure.
 * @class
 */
class StopDocParseRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document ID.
         * @type {string || null}
         */
        this.DocBizId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.DocBizId = 'DocBizId' in params ? params.DocBizId : null;

    }
}

/**
 * Q&A knowledge library workflow configuration.
 * @class
 */
class KnowledgeWorkflow extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable the workflow.
         * @type {boolean || null}
         */
        this.IsEnabled = null;

        /**
         * Whether to enable PDL.
         * @type {boolean || null}
         */
        this.UsePdl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.IsEnabled = 'IsEnabled' in params ? params.IsEnabled : null;
        this.UsePdl = 'UsePdl' in params ? params.UsePdl : null;

    }
}

/**
 * ListModel request structure.
 * @class
 */
class ListModelRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application type; knowledge_qa - knowledge Q&A management; summary - knowledge summary; classifys - knowledge label extraction.
         * @type {string || null}
         */
        this.AppType = null;

        /**
         * Application mode standard: standard; agent; single_workflow.
         * @type {string || null}
         */
        this.Pattern = null;

        /**
         * Model category: 
Generate: Generative model
Thought: Thinking model
         * @type {string || null}
         */
        this.ModelCategory = null;

        /**
         * Login to user's root account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginUin = null;

        /**
         * Login to user's sub-account (required in integrator mode).	
         * @type {string || null}
         */
        this.LoginSubAccountUin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.AppType = 'AppType' in params ? params.AppType : null;
        this.Pattern = 'Pattern' in params ? params.Pattern : null;
        this.ModelCategory = 'ModelCategory' in params ? params.ModelCategory : null;
        this.LoginUin = 'LoginUin' in params ? params.LoginUin : null;
        this.LoginSubAccountUin = 'LoginSubAccountUin' in params ? params.LoginSubAccountUin : null;

    }
}

/**
 * ListSelectDoc request structure.
 * @class
 */
class ListSelectDocRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Application ID.
         * @type {string || null}
         */
        this.BotBizId = null;

        /**
         * Document name.

         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Document status: 7: under review; 8: review failed; 10: pending release; 11: releasing; 12: released; 13: learning; 14: learning failed; 20: expired.
         * @type {Array.<number> || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.BotBizId = 'BotBizId' in params ? params.BotBizId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

module.exports = {
    ModifyQAAttrRangeResponse: ModifyQAAttrRangeResponse,
    GetWsTokenResponse: GetWsTokenResponse,
    ListUsageCallDetailRequest: ListUsageCallDetailRequest,
    CheckAttributeLabelExistRequest: CheckAttributeLabelExistRequest,
    AttributeFilters: AttributeFilters,
    DescribeQAResponse: DescribeQAResponse,
    ExtraInfo: ExtraInfo,
    GetAppKnowledgeCountRequest: GetAppKnowledgeCountRequest,
    StopDocParseResponse: StopDocParseResponse,
    ListSelectDocResponse: ListSelectDocResponse,
    DescribeReleaseInfoRequest: DescribeReleaseInfoRequest,
    DeleteDocRequest: DeleteDocRequest,
    GetAnswerTypeDataCountRequest: GetAnswerTypeDataCountRequest,
    RunNodeInfo: RunNodeInfo,
    AgentDebugInfo: AgentDebugInfo,
    UploadAttributeLabelResponse: UploadAttributeLabelResponse,
    MsgRecord: MsgRecord,
    CreateDocCateResponse: CreateDocCateResponse,
    DeleteDocCateResponse: DeleteDocCateResponse,
    ExportAttributeLabelResponse: ExportAttributeLabelResponse,
    WorkflowInfo: WorkflowInfo,
    ExportQAListResponse: ExportQAListResponse,
    GetAppSecretResponse: GetAppSecretResponse,
    ListRejectedQuestionRequest: ListRejectedQuestionRequest,
    CreateQACateResponse: CreateQACateResponse,
    ModifyDocAttrRangeResponse: ModifyDocAttrRangeResponse,
    GetAnswerTypeDataCountResponse: GetAnswerTypeDataCountResponse,
    DescribeQARequest: DescribeQARequest,
    AttrLabelRefer: AttrLabelRefer,
    CreateReconstructDocumentFlowConfig: CreateReconstructDocumentFlowConfig,
    DescribeUnsatisfiedReplyContextRequest: DescribeUnsatisfiedReplyContextRequest,
    Procedure: Procedure,
    ListAppRequest: ListAppRequest,
    AttrLabel: AttrLabel,
    ModifyQAAttrRangeRequest: ModifyQAAttrRangeRequest,
    GetWsTokenReq_Label: GetWsTokenReq_Label,
    ModifyDocResponse: ModifyDocResponse,
    ReleaseDoc: ReleaseDoc,
    KnowledgeQaSearch: KnowledgeQaSearch,
    CreateCorpResponse: CreateCorpResponse,
    ListQARequest: ListQARequest,
    DescribeKnowledgeUsageResponse: DescribeKnowledgeUsageResponse,
    ReferDetail: ReferDetail,
    ListUnsatisfiedReplyRequest: ListUnsatisfiedReplyRequest,
    DeleteQARequest: DeleteQARequest,
    GetLikeDataCountResponse: GetLikeDataCountResponse,
    ListReleaseRequest: ListReleaseRequest,
    KnowledgeCapacityPieGraphDetail: KnowledgeCapacityPieGraphDetail,
    CreateDocCateRequest: CreateDocCateRequest,
    InvokeAPI: InvokeAPI,
    SummaryOutput: SummaryOutput,
    ModifyAppResponse: ModifyAppResponse,
    ListDocResponse: ListDocResponse,
    ModifyQARequest: ModifyQARequest,
    TaskFlowInfo: TaskFlowInfo,
    GetDocPreviewRequest: GetDocPreviewRequest,
    ListDocCateResponse: ListDocCateResponse,
    ListRejectedQuestionPreviewResponse: ListRejectedQuestionPreviewResponse,
    DescribeCorpRequest: DescribeCorpRequest,
    ListAppCategoryResponse: ListAppCategoryResponse,
    CreateAppResponse: CreateAppResponse,
    DescribeAttributeLabelRequest: DescribeAttributeLabelRequest,
    CreateQARequest: CreateQARequest,
    KnowledgeSummary: KnowledgeSummary,
    TaskFlowSummary: TaskFlowSummary,
    CreateCorpRequest: CreateCorpRequest,
    RetryDocParseRequest: RetryDocParseRequest,
    ListQaItem: ListQaItem,
    DeleteAttributeLabelRequest: DeleteAttributeLabelRequest,
    DescribeRobotBizIDByAppKeyResponse: DescribeRobotBizIDByAppKeyResponse,
    RenameDocResponse: RenameDocResponse,
    ListDocCateRequest: ListDocCateRequest,
    DescribeDocResponse: DescribeDocResponse,
    CreateReleaseRequest: CreateReleaseRequest,
    Label: Label,
    AgentProcedure: AgentProcedure,
    KnowledgeQaOutput: KnowledgeQaOutput,
    ModifyRejectedQuestionRequest: ModifyRejectedQuestionRequest,
    ApiVarAttrInfo: ApiVarAttrInfo,
    AgentThought: AgentThought,
    GroupDocRequest: GroupDocRequest,
    CheckAttributeLabelReferRequest: CheckAttributeLabelReferRequest,
    ModifyQACateRequest: ModifyQACateRequest,
    SearchStrategy: SearchStrategy,
    ModifyAttributeLabelRequest: ModifyAttributeLabelRequest,
    ProcedureDebugging: ProcedureDebugging,
    AttributeLabel: AttributeLabel,
    Option: Option,
    ListUnsatisfiedReplyResponse: ListUnsatisfiedReplyResponse,
    GetAppSecretRequest: GetAppSecretRequest,
    ModelParameter: ModelParameter,
    DeleteQACateResponse: DeleteQACateResponse,
    SaveDocResponse: SaveDocResponse,
    ListReleaseDocPreviewResponse: ListReleaseDocPreviewResponse,
    RenameDocRequest: RenameDocRequest,
    SummaryConfig: SummaryConfig,
    GenerateQAResponse: GenerateQAResponse,
    GetTaskStatusResponse: GetTaskStatusResponse,
    DescribeConcurrencyUsageGraphRequest: DescribeConcurrencyUsageGraphRequest,
    DescribeDocRequest: DescribeDocRequest,
    AgentProcedureDebugging: AgentProcedureDebugging,
    DescribeTokenUsageGraphRequest: DescribeTokenUsageGraphRequest,
    RetryDocAuditRequest: RetryDocAuditRequest,
    VoiceConfig: VoiceConfig,
    SaveDocRequest: SaveDocRequest,
    ReconstructDocumentFailedPage: ReconstructDocumentFailedPage,
    ListAppKnowledgeDetailResponse: ListAppKnowledgeDetailResponse,
    ModifyQACateResponse: ModifyQACateResponse,
    DescribeAttributeLabelResponse: DescribeAttributeLabelResponse,
    KnowledgeQaSingleWorkflow: KnowledgeQaSingleWorkflow,
    ListQACateResponse: ListQACateResponse,
    RetryDocParseResponse: RetryDocParseResponse,
    CreateRejectedQuestionResponse: CreateRejectedQuestionResponse,
    ListReleaseQAPreviewResponse: ListReleaseQAPreviewResponse,
    ExportUnsatisfiedReplyRequest: ExportUnsatisfiedReplyRequest,
    GroupQAResponse: GroupQAResponse,
    QuoteInfo: QuoteInfo,
    CreateAppRequest: CreateAppRequest,
    AppConfig: AppConfig,
    DescribeReleaseRequest: DescribeReleaseRequest,
    ReleaseQA: ReleaseQA,
    ListAppCategoryRequest: ListAppCategoryRequest,
    ListReleaseConfigPreviewRequest: ListReleaseConfigPreviewRequest,
    CallDetail: CallDetail,
    DocFilterFlag: DocFilterFlag,
    ListReleaseDocPreviewRequest: ListReleaseDocPreviewRequest,
    TokenStat: TokenStat,
    DocSegment: DocSegment,
    UnsatisfiedReply: UnsatisfiedReply,
    DescribeUnsatisfiedReplyContextResponse: DescribeUnsatisfiedReplyContextResponse,
    ModifyDocAttrRangeRequest: ModifyDocAttrRangeRequest,
    DigitalHumanConfig: DigitalHumanConfig,
    CreateRejectedQuestionRequest: CreateRejectedQuestionRequest,
    DescribeKnowledgeUsagePieGraphRequest: DescribeKnowledgeUsagePieGraphRequest,
    AttrLabelDetail: AttrLabelDetail,
    DescribeReferResponse: DescribeReferResponse,
    Context: Context,
    ListDocRequest: ListDocRequest,
    QAQuery: QAQuery,
    GroupQARequest: GroupQARequest,
    UpdatePeriodInfo: UpdatePeriodInfo,
    DescribeCallStatsGraphRequest: DescribeCallStatsGraphRequest,
    GetMsgRecordResponse: GetMsgRecordResponse,
    DescribeAppRequest: DescribeAppRequest,
    GetReconstructDocumentResultRequest: GetReconstructDocumentResultRequest,
    DescribeKnowledgeUsageRequest: DescribeKnowledgeUsageRequest,
    ListQAResponse: ListQAResponse,
    IgnoreUnsatisfiedReplyRequest: IgnoreUnsatisfiedReplyRequest,
    DescribeReleaseResponse: DescribeReleaseResponse,
    DescribeConcurrencyUsageGraphResponse: DescribeConcurrencyUsageGraphResponse,
    ListDocItem: ListDocItem,
    VerifyQARequest: VerifyQARequest,
    RateMsgRecordRequest: RateMsgRecordRequest,
    AppModel: AppModel,
    Stat: Stat,
    DescribeKnowledgeUsagePieGraphResponse: DescribeKnowledgeUsagePieGraphResponse,
    ListRejectedQuestionResponse: ListRejectedQuestionResponse,
    ClassifyLabel: ClassifyLabel,
    DescribeTokenUsageGraphResponse: DescribeTokenUsageGraphResponse,
    SimilarQuestionModify: SimilarQuestionModify,
    WorkflowRunNodeInfo: WorkflowRunNodeInfo,
    StatisticInfo: StatisticInfo,
    RetryDocAuditResponse: RetryDocAuditResponse,
    GetReconstructDocumentResultResponse: GetReconstructDocumentResultResponse,
    ModifyDocCateRequest: ModifyDocCateRequest,
    RetryReleaseResponse: RetryReleaseResponse,
    GetLikeDataCountRequest: GetLikeDataCountRequest,
    DeleteRejectedQuestionResponse: DeleteRejectedQuestionResponse,
    Credentials: Credentials,
    MsgFileInfo: MsgFileInfo,
    CreateAttributeLabelRequest: CreateAttributeLabelRequest,
    ListAppResponse: ListAppResponse,
    AppInfo: AppInfo,
    CateInfo: CateInfo,
    CreateReconstructDocumentFlowRequest: CreateReconstructDocumentFlowRequest,
    ValueInfo: ValueInfo,
    KnowledgeQaConfig: KnowledgeQaConfig,
    RejectedQuestion: RejectedQuestion,
    MsgRecordReference: MsgRecordReference,
    AICallConfig: AICallConfig,
    ListRejectedQuestionPreviewRequest: ListRejectedQuestionPreviewRequest,
    ListReleaseConfigPreviewResponse: ListReleaseConfigPreviewResponse,
    ModelInfo: ModelInfo,
    DeleteRejectedQuestionRequest: DeleteRejectedQuestionRequest,
    Highlight: Highlight,
    FileInfo: FileInfo,
    ExportQAListRequest: ExportQAListRequest,
    GetDocPreviewResponse: GetDocPreviewResponse,
    DescribeConcurrencyUsageResponse: DescribeConcurrencyUsageResponse,
    CreateReleaseResponse: CreateReleaseResponse,
    ModifyAppRequest: ModifyAppRequest,
    KnowledgeDetail: KnowledgeDetail,
    DeleteAttributeLabelResponse: DeleteAttributeLabelResponse,
    RetryReleaseRequest: RetryReleaseRequest,
    KnowledgeQaPlugin: KnowledgeQaPlugin,
    IntentAchievement: IntentAchievement,
    DeleteQACateRequest: DeleteQACateRequest,
    GenerateQARequest: GenerateQARequest,
    GetWsTokenRequest: GetWsTokenRequest,
    QACate: QACate,
    ModifyAttributeLabelResponse: ModifyAttributeLabelResponse,
    ModifyDocRequest: ModifyDocRequest,
    DescribeTokenUsageResponse: DescribeTokenUsageResponse,
    DeleteAppResponse: DeleteAppResponse,
    SearchRange: SearchRange,
    ListAttributeLabelRequest: ListAttributeLabelRequest,
    DeleteDocCateRequest: DeleteDocCateRequest,
    AgentReference: AgentReference,
    DeleteDocResponse: DeleteDocResponse,
    BaseConfig: BaseConfig,
    DescribeSegmentsResponse: DescribeSegmentsResponse,
    SimilarQuestion: SimilarQuestion,
    ClassifyConfig: ClassifyConfig,
    DescribeConcurrencyUsageRequest: DescribeConcurrencyUsageRequest,
    GroupDocResponse: GroupDocResponse,
    UploadAttributeLabelRequest: UploadAttributeLabelRequest,
    ListUsageCallDetailResponse: ListUsageCallDetailResponse,
    ExportAttributeLabelRequest: ExportAttributeLabelRequest,
    DescribeTokenUsageRequest: DescribeTokenUsageRequest,
    GetAppKnowledgeCountResponse: GetAppKnowledgeCountResponse,
    CreateAttributeLabelResponse: CreateAttributeLabelResponse,
    DuplicateFileHandle: DuplicateFileHandle,
    ListAppKnowledgeDetailRequest: ListAppKnowledgeDetailRequest,
    CreateQAResponse: CreateQAResponse,
    ListQACateRequest: ListQACateRequest,
    ListReleaseQAPreviewRequest: ListReleaseQAPreviewRequest,
    DescribeReleaseInfoResponse: DescribeReleaseInfoResponse,
    DescribeAppResponse: DescribeAppResponse,
    DeleteAppRequest: DeleteAppRequest,
    ModifyRejectedQuestionResponse: ModifyRejectedQuestionResponse,
    WorkFlowSummary: WorkFlowSummary,
    TaskParams: TaskParams,
    ListAppCategoryRspOption: ListAppCategoryRspOption,
    DescribeStorageCredentialRequest: DescribeStorageCredentialRequest,
    QAList: QAList,
    DescribeCorpResponse: DescribeCorpResponse,
    ModifyDocCateResponse: ModifyDocCateResponse,
    ListReleaseResponse: ListReleaseResponse,
    ListModelResponse: ListModelResponse,
    ListAttributeLabelResponse: ListAttributeLabelResponse,
    ListReleaseItem: ListReleaseItem,
    ModifyQAResponse: ModifyQAResponse,
    DeleteQAResponse: DeleteQAResponse,
    DescribeCallStatsGraphResponse: DescribeCallStatsGraphResponse,
    GetMsgRecordRequest: GetMsgRecordRequest,
    DescribeStorageCredentialResponse: DescribeStorageCredentialResponse,
    CheckAttributeLabelExistResponse: CheckAttributeLabelExistResponse,
    StrValue: StrValue,
    GetTaskStatusRequest: GetTaskStatusRequest,
    CheckAttributeLabelReferResponse: CheckAttributeLabelReferResponse,
    RateMsgRecordResponse: RateMsgRecordResponse,
    PluginToolReqParam: PluginToolReqParam,
    ReleaseRejectedQuestion: ReleaseRejectedQuestion,
    CreateQACateRequest: CreateQACateRequest,
    DescribeRobotBizIDByAppKeyRequest: DescribeRobotBizIDByAppKeyRequest,
    ExportUnsatisfiedReplyResponse: ExportUnsatisfiedReplyResponse,
    CreateReconstructDocumentFlowResponse: CreateReconstructDocumentFlowResponse,
    HistorySummary: HistorySummary,
    VerifyQAResponse: VerifyQAResponse,
    ReleaseConfigs: ReleaseConfigs,
    DescribeSegmentsRequest: DescribeSegmentsRequest,
    DescribeSearchStatsGraphRequest: DescribeSearchStatsGraphRequest,
    DescribeSearchStatsGraphResponse: DescribeSearchStatsGraphResponse,
    Filters: Filters,
    DescribeReferRequest: DescribeReferRequest,
    IgnoreUnsatisfiedReplyResponse: IgnoreUnsatisfiedReplyResponse,
    StopDocParseRequest: StopDocParseRequest,
    KnowledgeWorkflow: KnowledgeWorkflow,
    ListModelRequest: ListModelRequest,
    ListSelectDocRequest: ListSelectDocRequest,

}
